我想用R绘制一个多饼图。我有数据包含3个级别的信息,我想在第三级突出显示信息。例如,我的样本大小为48,在第一级中分为12和36。然后,12被分成3和9,36被分成第二级中的24和12。在第三级,3进一步分为1和2,24进一步分为15和9.我想呈现所有3个级别的数据,但只需要突出显示3和24的划分。
我正在考虑绘制一个多饼图以在R中显示它,但我不知道R是否能够做到这一点。由于我需要准确的百分比,我不能使用Photoshop绘制图表。
如果R不能这样做,我想知道我可以用什么来绘制图表?任何帮助,将不胜感激。提前谢谢!
答案 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)
结果实际上是正确标记的:
答案 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)
结果: