2016-07-10 6 views
1

Ich habe 4 Elemente: x1 x2 x3 x4 und entsprechende Werte:Wie behält man 0 Wert in GGPLOT2 Tortendiagramm?

overlap_cha <- data.frame(type=rep(c("x1","x2","x3","x4"),c(18,0,91,3)))

Wenn ich Kreisdiagramm plotten, wird der x2 mit 0 Wert nicht in der Legende angezeigt.

pie <- ggplot(overlap_cha, aes(x = 0, fill = type)) + geom_bar(width = 1) 
pie + coord_polar(theta = "y") 

Wie kann ich es behalten?

+0

Dies ist nicht reproduzierbar. – Alex

+0

@Alex Ich bearbeite es einfach. –

+0

ähnlich wie http://StackOverflow.com/Questions/10834382/ggplot2-keep-unused-levels-barplot, aber ich kann diese Antworten auf Arbeit ATM nicht ganz bekommen ... –

Antwort

2

Dies ist ähnlich ggplot2 keep unused levels barplot ...

Daten einrichten (aber vielleicht nicht vollkommen identisch?):

overlap_cha <- data.frame(type=rep(c("x1","x2","x3","x4"),c(18,0,91,3))) 

Sicherstellen, dass die Variable entsprechenden Faktor Ebenen:

overlap_cha$type <- factor(overlap_cha$type,levels=c("x1","x2","x3","x4")) 


library(ggplot2) 
pie <- ggplot(overlap_cha, aes(x = 0, fill = type)) + geom_bar(width = 1) 
pie2 <- pie + scale_fill_discrete(drop=FALSE)+scale_x_discrete(drop=FALSE)+ 
     coord_polar(theta = "y") 

Wenn Sie die Farben ändern möchten, verwenden Sie scale_fill_brewer (oder verwenden Sie scale_fill_manual mit dem Argument values):

pie3 <- pie + 
    scale_fill_brewer(palette="Set1",drop=FALSE)+ 
    scale_x_discrete(drop=FALSE)+ 
     coord_polar(theta = "y") 

enter image description here

+0

Eigentlich funktioniert der 'scale_fill_brewer' oder' scale_fill_manual' nicht. –

+0

wirklich? Was ist mit meinem Beispiel, das 'scale_fill_brewer' verwendet und scheint zu funktionieren? –

+0

'Fehler in f (..., self = self): Versuch, eine Nichtfunktion anzuwenden '. Was ist passiert? 'pie <- ggplot (overlap_cha, aes (x =" ", fill = Typ)) + geom_bar (width = 1) + scale_fill_discrete (palette =" Set1 ", drop = FALSE, labels = nwLabel) + scale_x_discrete (drop = FALSE) ' –

Verwandte Themen