Aus verschiedenen Gründen versuche ich, das unten gezeigte groteske Diagramm zu duplizieren. Es verstößt gegen viele Grundsätze einer guten Datenvisualisierung. Daher ist es für Trainingszwecke mein Ziel, ggplot2
zu verwenden und es zu dekonstruieren - schlecht ausgewählte Funktionen nacheinander zu entfernen oder zu überarbeiten. Mit den unten wiedergegebenen Daten und dem Code unter der Handlung komme ich näher, konnte aber nicht herausfinden, wie man eine bemerkenswerte Funktion einbezieht.Wie können Sie mit ggplot2 eine Box um ein Häkchen erstellen?
Frage: Gibt es eine Möglichkeit, das schwarz schattierte Rechteck um die drei Hilfsstrichsbeschriftungen zu reproduzieren? (Wenn ja, ist es einfach, einen anderen Faktor Variable zu erstellen, diese drei Etiketten zu identifizieren und ihre Schrift auf weißem zu ändern.)
ggplot(plotpg19, aes(x = risks, y = scores, fill = colors)) +
geom_bar(stat = "identity", width = 0.6) +
scale_fill_manual(values = c("grey50", "deepskyblue2", "mediumorchid3", "gold")) +
geom_text(aes(label = scores), hjust = -0.4, size = 8, face = "bold") +
coord_flip() +
theme_bw() + labs(x = NULL, y = NULL) +
theme(panel.grid.major = element_blank()) +
guides(fill = FALSE) +
scale_y_continuous(breaks = seq(0, 100, 20), labels = seq(0, 100, 20), expand = c(0,0)) +
theme(panel.border = element_blank(), axis.line = element_line(colour = "black", size = 5, linetype ="solid", lineend = "square")) +
geom_hline(yintercept = seq(0, 80, 10), colour="grey30", size = .5, linetype="dotted") +
theme(axis.line.x = element_blank()) # to get a single axis border, must format both and then blank one
BTW, diese Frage uses symbols for tick labels kann einige Einblicke bieten die Verwendung von grImport
Paket, aber seine Lehren sind über mich hinaus und ich bin auf der Suche nach einer schattierten Box um bestimmte Tick-Etiketten.
dput(plotpg19)
structure(list(risks.format = structure(c(2L, 3L, 1L, 4L, 5L,
7L, 8L, 6L), .Label = c("Geographic locations in which\n the company operates",
"Inadequate resources for anti-bribery/\ncorruption compliance activities",
"Industries/sector(s) in which\n the company operates",
"Lack of anti-bribery/corruption training\n or awareness within the business",
"Lack of understanding\n by top executives",
"Other", "Rogue employees", "Third parties/associates\n acting on our behalf"
), class = "factor"), risks = structure(c(8L, 7L, 6L, 5L, 4L,
3L, 2L, 1L), .Label = c("Other", "Third parties/associates acting on our behalf",
"Rogue employees", "Lack of understanding by top executives",
"Lack of anti-bribery/corruption training or awareness within the business",
"Geographic locations in which the company operates", "Industries/sector(s) in which the company operates",
"Inadequate resources for anti-bribery/corruption compliance activities"
), class = "factor"), scores = c(15, 28, 71, 16, 5, 48, 55, 2
), colors = c("A", "A", "B", "A", "A", "C", "D", "A")), .Names = c("risks.format",
"risks", "scores", "colors"), row.names = c(NA, -8L), class = "data.frame")
Der einzige Ansatz, den ich von ist denken kann, um den Plot zu erstellen und 'ggplot_build' anrufen und' ggplot_gtable' manuell die Raster-Version zu erhalten die Handlung und dann, um die entsprechenden groabs manuell zu bearbeiten. –