Ich versuche, eine Karte mit ggplot auf einem Faktor-Typ-Vektor von 0 bis 4, die ich farblich codiert. Der Vektor befindet sich in dem Datenrahmen, den ich spat.dataframe
nannte, und der Vektor ist qt
.R: Gibt es eine Möglichkeit, ungenutzte Datenebenen in einer ggplot-Legende hinzuzufügen?
# plot
ggplot(spat.dataframe, aes(long,lat,group=group)) + # the data
geom_polygon(aes(fill=as.factor(qt))) + # make polygons
scale_fill_manual(values = c("0"="#F0F0F0","1"="green","2"="red","3"="blue","4"="purple"),
labels = c(paste0("white (",length(spat.dataframe[spat.dataframe$qt==0,]),")"),
paste0("green (",length(spat.dataframe[spat.dataframe$qt==1,]),")"),
paste0("red (",length(spat.dataframe[spat.dataframe$qt==2,]),")"),
paste0("blue (",length(spat.dataframe[spat.dataframe$qt==3,]),")"),
paste0("pink (",length(spat.dataframe[spat.dataframe$qt==4,]),")")),
drop=F,
name=NULL) +
theme(line = element_blank(), # remove the background, tickmarks, etc
axis.text = element_blank(),
axis.title = element_blank(),
panel.background = element_blank()) +
ggtitle(title) +
geom_path(colour = "#6b6b6b", size = .5) +
coord_equal()
Mein Problem liegt bei dem Legende Teil, weil das, was ich tun möchte, ist sogar alle der Legende Optionen angezeigt werden, ob es einen in dem Vektor aufgelistet Arent. Also die Werte mit den Farben blau und lila. Es mag ein bisschen wie eine Strecke zu versuchen scheinen, aber ich will es auf meiner Figur, so dass ich auch die Anzahl der möglichen Werte und die Anzahl der Polygone anzeigen kann, die mit diesem Wert verbunden sind. So sind für die Werte 3 und 4 in meinem Vektor qt
beide Null (d. H. blue (0)
und purple (0)
).
Alle Vorschläge würden sehr geschätzt werden. Vielen Dank.
Wenn die Werte existieren, aber Sie wollen, dass sie verstecken, können Sie die Farbe festgelegt für diese Werte auf einen Wert mit einem Alpha (zwei zusätzliche Ziffern auf einer hexadezimalen Farbe) von "00", dh vollständig transparent, z 'ggplot (mtcars, aes (wt, mpg, Farbe = Faktor (cyl))) + geom_point() + scale_color_manual (Werte = c ('blau', '# 00000000', 'rot'))'. Wenn die Werte nicht existieren, können Sie vermutlich ein paar falsche einhacken, damit die Levels erscheinen, aber es könnte einen besseren Weg geben. – alistaire
Danke für die Antwort! Mein grundlegendes Ziel war es, die Optionen unabhängig davon anzuzeigen, ob sie auf der Karte waren. Auf einer anderen Anmerkung erwarte ich, dass ich schließlich Ihren ersten Vorschlag auf ein anderes Problem später später verwenden muss, also danke dafür. Du hattest recht, dass ich einen Weg finden musste, um es zu hacken, und ich denke, Zachs Antwort hat genau das getan. Danke noch einmal! – JellisHeRo