如何在r

时间:2017-09-24 21:50:29

标签: r pie-chart

我想用R绘制一个多饼图。我有数据包含3个级别的信息,我想在第三级突出显示信息。例如,我的样本大小为48,在第一级中分为12和36。然后,12被分成3和9,36被分成第二级中的24和12。在第三级,3进一步分为1和2,24进一步分为15和9.我想呈现所有3个级别的数据,但只需要突出显示3和24的划分。

我正在考虑绘制一个多饼图以在R中显示它,但我不知道R是否能够做到这一点。由于我需要准确的百分比,我不能使用Photoshop绘制图表。

如果R不能这样做,我想知道我可以用什么来绘制图表?任何帮助,将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:2)

我刚刚找到了另一个答案,比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

答案 1 :(得分:0)

由于您没有提供正确的样本数据,我将构建您描述的3步数据的两步版本。我会把它留给你概括。

这里是数据(请注意,我将数据划分为类型和子类型,并构建一个三列数据集......您的最终版本将是相同的,但使用" C&#34 ;类型和一些新的子类型):

> 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