Ich versuche, Grafiken für monatliche Diagramme zu automatisieren/halbautomatisch zu erstellen, die die Anzahl der spezifischen/markierten Organismen in Krankenhausstationen anzeigen. Ich verwende dafür ein gestapeltes Balkendiagramm. Das Problem ist, dass wenn ich die Organismen aus meinem Datensatz ausschließe, es offensichtlich nicht in meiner Legende erscheint. Meine dumme Lösung ist, die Organismen hinzuzufügen, die für den bestimmten Monat nicht gefunden wurden, und die Station als nichts oder eher "leer" zu bezeichnen. So bekomme ich meine Legende so, wie ich es möchte. Das Problem ist jetzt, dass, wie Sie am Ende des Diagramms sehen können, ich die "" - Abteilung gezeigt habe. Das sieht unprofessionell aus. Andere Sache, die ich ausprobiert habe, ist es, geom_blank zu verwenden und die Etiketten so hinzuzufügen, wie ich es möchte, aber dann die nicht getesteten Organismen nicht einschließend - es hat nicht funktioniert. Gibt es eine Möglichkeit, eine Legende zu zwingen, genau das zu sein, was ich möchte, unabhängig davon, ob die Daten enthalten sind oder nicht.R gplot geom_bar, inkl. Etiketten, auch wenn Daten fehlen
library(ggplot2)
ward_stats <- read.csv("ward_stats.csv")
#specific colors for specific organisms
my_colours <- c("Acinetobacter baumannii (Carbapenem resisistant)" = "red3",
"Pseudomonas aeruginosa (MDR)" = "gold",
"Enterobacter cloacae (ESBL)" = "purple",
"Enterococcus faecium (VRE)" = "violet",
"Escherichia coli (ESBL)" = "dodgerblue1",
"Klebsiella pneumoniae (ESBL)" = "yellowgreen",
"Mycobacterium tuberculosis complex" = "black",
"Staphylococcus aureus (MRSA)" = "turquoise",
"Klebsiella pneumoniae (Carbapenem resistant)" = "grey",
"Clostridium difficile" = "sienna4")
#A vector of organisms on the flag list in the order we want to show in the legend
targetOrder <- c("Acinetobacter baumannii (Carbapenem resisistant)", "Pseudomonas aeruginosa (MDR)",
"Enterobacter cloacae (ESBL)", "Escherichia coli (ESBL)", "Klebsiella pneumoniae (ESBL)",
"Klebsiella pneumoniae (Carbapenem resistant)", "Staphylococcus aureus (MRSA)", "Enterococcus faecium (VRE)",
"Clostridium difficile", "Mycobacterium tuberculosis complex")
p <- ggplot(data=ward_stats,aes(x=ward_stats$Ward.Name,
y=ward_stats$freq,
fill=ward_stats$Result...Organism.Identified))
p <- p + geom_bar(stat="identity")
p <- p + geom_text(aes(y=cum_freq, label=freq), hjust= 2, color='white')
p <- p + coord_flip()
p <- p + ggtitle("Hospital")
p <- p + theme(plot.title = element_text(size=20, face="bold"))
p <- p + labs(x=NULL, y= "Number cultured per ward", vjust = -2)
p <- p + theme(axis.title.x = element_text(color="black", vjust=-2, size=12))
p <- p + theme(axis.text.x=element_text(size=10, vjust=0.5))
p <- p + theme(legend.title=element_blank())
p <- p + scale_fill_manual(values = my_colours, breaks = targetOrder)
p <- p + theme(panel.background = element_rect(fill="#e6e6ff"))
#pdf_title <- paste(graph_title,".pdf", sep="")
#ggsave("graph.pdf", plot=p, width = 10, height = 8, units = "in")
print(p)
Blick auf die Unterseite des Graphen aus den obigen Link, beachten Sie, dass ein leerer Ort/Rohling an der Zecke ist.
Ich kann falsch liegen, aber haben Sie versucht, Ebenen vor dem Plotten fallen lassen? –