2015-11-08 67 views
8

比方說,我有這個簡單的數據:美麗的餅圖,其中R

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

如果我要創建這個數據幀餅圖我可以這樣做:

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

basic pie

這很簡單,但可以接受。

我怎樣才能得到與ggplot2或點陣類似的東西?

大量的試驗和錯誤之後,我已經得到了

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

ggplot

它更復雜和醜陋。難道它不容易嗎? ggplot書籍只給出一些例子,並不鼓勵使用餅圖。

晶格更糟糕,你需要許多許多線條才能讓它驚悚。

請問有人能幫我頂一張漂亮簡單的餅圖嗎? 例如像...

example1

example2

是不是有什麼[R包能夠做到這一點很容易,沒有20行代碼?

+4

rawrs代碼生成一個可愛的陰謀使用基地R:http://stackoverflow.com/questions/26748069/ggplot2-pie-and-donut-chart-on-same-plot/26749522#26749522 - 可能會提供一些提示(但最有可能你需要> 20行) – user20650

+5

ggplot派如何「醜陋」?如果您告訴我們缺少/需要更改的東西,幫助您會更容易。 – scoa

+2

@skan please請_please_查看大量免費的信息,這將有助於你理解爲什麼你認爲最底部的兩個餅圖「美麗」,並且(我猜)很好地傳達數據實際上是非常可怕的,確保你想要的結果。我很欣賞史蒂文納入華夫餅圖和乾淨地執行的條形圖也可以很好地處理您的初始餅圖中的數據。 – hrbrmstr

回答

9

您可以從plotrixpie3D()功能嘗試:

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

如果只有那裏有些C4可用於實際爆炸餅圖:-) – hrbrmstr

+1

你能解釋什麼是C4? – skan

+1

C4是一個[強大的爆炸](https://en.wikipedia.org/wiki/C-4_%28explosive%29)。 – RHertel

28

爲什麼不是正方形餅圖?

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


如果你有多個信息層面,另一個選擇可能是sunburstR。從@rawr post使用browsers數據,你可以這樣做:

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

enter image description here

你可以使用treemap(用於交互式版本,嘗試@ timelyportfolio的d3treeRpackage

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

enter image description here

你也可以使用as ankey圖(從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

和一個使用[base]的例子(https://github.com/raredd/plotr/blob/master/R/plots.R#L804:L823) – rawr

+1

這兩個地塊都很棒@Steven Beaupre –

25

一些方便的技巧在這裏:

來源:Dark Horse Analytics: Salvaging the Pie

(srsly壽,有什麼不對的條形圖?)

注:我不知道什麼黑馬分析一樣。這只是我的去向,反餡餅演示圖像。

+2

培根,當然也會很棒! –