2015-11-08 11 views
8

Lassen Sie sich sagen, ich habe diese einfachen Daten:schöne Pie Chart mit R

mydata <- data.frame(group=c("A", "B", "0", "AB"), FR=c(20, 32, 32, 16)) 

Wenn ich ein Kreisdiagramm aus diesem Datenrahmen erstellt werden soll ich tun kann:

with(mydata,pie(FR, labels=paste0(as.character(group), " ", FR, "%"), radius=1)) 

basic pie

Es ist ziemlich einfach, aber akzeptabel.

Wie kann ich etwas ähnliches mit ggplot2 oder Gitter bekommen?

Nach viel Versuch und Irrtum Ich habe

bekam
ggplot(mydata, aes(x = factor(1), y=FR,fill=factor(group))) + geom_bar(width = 1,stat="identity")+coord_polar(theta = "y") 

ggplot

Es ist viel komplexer und hässlich. Soll das nicht einfach sein? ggplot Bücher geben nur einige Beispiele und raten von der Verwendung von Kreisdiagrammen ab.

Gitter ist noch schlimmer, Sie brauchen viele viele Linien, um es zu erschrecken.

Könnte mir bitte jemand helfen, ein nettes und einfaches Tortendiagramm zu bekommen? Zum Beispiel so etwas wie ...

example1

example2

Gibt es kein R-Paket kann es leicht, ohne 20 Zeilen Code, tun?

+4

rowrs Code produziert eine schöne Handlung mit Base R: http://StackOverflow.com/Questions/26748069/ggplot2-pie-and-donut-chart-on-same-plot/26749522#26749522 - könnte einige Hinweise geben (aber wahrscheinlich wirst du> 20 Zeilen brauchen) – user20650

+5

wie ist der ggplot pie "hässlich"? Es wäre einfacher, Ihnen zu helfen, wenn Sie uns sagen, was fehlt/geändert werden muss. – scoa

+2

@skan bitte, _please_ Blick in die große Palette von Informationen kostenlos zur Verfügung, die Ihnen helfen würde zu verstehen, warum die beiden unteren Kreisdiagramme, die Sie denken, sind "schön" und (ich denke) Daten gut kommunizieren sind eigentlich ziemlich schrecklich und ziemlich ineffektiv bei das gewünschte Ergebnis sicherstellen. Ich weiß es zu schätzen, dass Steven ein Waffel-Diagramm eingefügt hat und ein sauber ausgeführtes Balkendiagramm auch für die Daten in Ihrem anfänglichen Kuchen recht gut ist. – hrbrmstr

Antwort

9

Sie mit der pie3D() Funktion aus dem plotrix Paket ausprobieren können:

library(plotrix) 
pie3D(mydata$FR, labels = mydata$group, main = "An exploded 3D pie chart", explode=0.1, radius=.9, labelcex = 1.2, start=0.7) 

enter image description here

+8

wenn nur dort waren einige C4 verfügbar, um Kreisdiagramme wirklich zu explodieren :-) – hrbrmstr

+1

Können Sie erklären, was C4 ist? – skan

+1

C4 ist ein [mächtiger Sprengstoff] (https://en.wikipedia.org/wiki/C-4_%28explosive%29). – RHertel

28

Warum nicht ein Quadrat Kreisdiagramm?

devtools::install_github("hrbrmstr/waffle") 
library(waffle) 

mydata <- c(`A`=20, `B`=32, `0`=32, `AB`=16) 
waffle(mydata, title = "Yummy waffle pie!") 

enter image description here


Wenn Sie mehrere Dimensionen von Informationen haben, könnte eine weitere Option sunburstR sein.Mit browsers Daten von @rawr post Sie tun können:

library(sunburstR) 
library(dplyr) 
library(tidyr) 
browsers %>% 
    unite(bv, browser, version, sep = "-") %>% 
    select(bv, share) %>% 
    sunburst(., count = TRUE) 

enter image description here

Sie treemap nutzen könnten (für eine interaktive Version, versuchen @ timelyportfolio der d3treeRpackage)

library(treemap) 
tm <- treemap(
    browsers, 
    index=c("browser", "version"), 
    vSize="share", 
    vColor="share", 
    type="value" 
) 

enter image description here

Sie könnten auch als verwenden Ankey Diagramm (aus dem networkD3package)

library(networkD3) 
df <- browsers %>% 
    mutate_each(funs(as.character), browser, version) %>% 
    mutate(bn = group_indices_(., .dots = "browser"), 
     cn = max(bn) + row_number()) 

links <- select(df, bn, cn, share) 
nodes <- data.frame(name = c("", sort(unique(df$browser)), df$version)) 

sankeyNetwork(Links = links, Nodes = nodes, Source = "bn", 
       Target = "cn", Value = "share", NodeID = "name", 
       fontSize = 12, nodeWidth = 30) 

enter image description here

+2

und ein Beispiel mit [base] (https://github.com/aredd/plotr/blob/master/R/plots.R#L804:L823) – rawr

+1

Beide Parzellen sind großartig @Steven Beaupre –

25

Einige praktische Tipps hier:

Quelle: Dark Horse Analytics: Salvaging the Pie

(srsly tho, was mit einem Balkendiagramm falsch?)

HINWEIS: Ich habe keine Ahnung, was Dark Horse Analytics tut. Dies ist nur mein Demo-Anti-Pie-Demo.

+2

Speck, natürlich! –