2017-09-24 56 views
0

我想用R繪製多個餅圖。我有數據包含3個級別的信息,我想強調第三級中的信息。例如,我的樣本量爲48,在第一級分爲12和36。然後,12被分成3和9,並且36在第二級被分成24和12。在第三級,3進一步劃分爲1和2,24進一步劃分爲15和9.我想提出所有3個級別的數據,但只需要強調3和24的劃分。如何在r中繪製多個餅圖

我想繪製一個多餅圖來顯示它在R中,但我不知道R是否能夠做到這一點。由於我需要確切的百分比,所以我無法使用Photoshop繪製圖表。

如果R不能這樣做,我想知道我能用什麼來繪製圖表?任何幫助,將不勝感激。提前致謝!

回答

0

由於您沒有提供適當的樣本數據,我將構建您描述的3步數據的兩步版本。我會把它推廣到你的概括。 (請注意,我將數據劃分爲類型和子類型,並構建一個三列數據集......您的最終版本將是相同的,但是具有「C」類型和一些新的子類型):

> df = data.frame(type = c("A", "A", "B", "B", "B", "B"), subtype = c("X1", "X2", "X1.a", "X1.b", "X2.a", "X2.b"), value = c(12, 36, 3, 9, 24, 12)) 
    type subtype value 
1 A  X1 12 
2 A  X2 36 
3 B X1.a  3 
4 B X1.b  9 
5 B X2.a 24 
6 B X2.b 12 

這裏就是我如何做餅圖與ggplot2包:

library(ggplot2) 
ggplot(df, aes(x = factor(1), y = value, fill = factor(subtype))) + 
    geom_bar(stat = "identity", width = 1) + 
    theme(legend.position = "none") + 
    scale_x_discrete(NULL, expand = c(0,0)) + 
    scale_y_continuous(NULL, expand = c(0,0)) + 
    coord_polar(theta = "y") + 
    facet_wrap(~type) 

結果:

pie chart prototype

1

我剛剛發現了另一個答案,比ggplot2簡單。仍然假設你有數據是這樣的:

> df = data.frame(type = c("A", "A", "B", "B", "B", "B"), subtype = c("X1", "X2", "X1.a", "X1.b", "X2.a", "X2.b"), value = c(12, 36, 3, 9, 24, 12)) 
    type subtype value 
1 A  X1 12 
2 A  X2 36 
3 B X1.a  3 
4 B X1.b  9 
5 B X2.a 24 
6 B X2.b 12 

你可以這樣做:

par(mfrow = c(1,2)) 
pie(df[1:2,]$value, labels = df[1:2,]$subtype) 
pie(df[3:6,]$value, labels = df[3:6,]$subtype) 

結果實際上是正確標註:

pie charts