2017-09-24 196 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