如何使用ggplot2生成饼图?

19

我有一个值向量,希望将其显示为饼图。该向量由1、2和3组成,我希望我的饼图显示向量中1、2和3的百分比,并标记每个区域的标签。其中1代表民主党,2代表共和党,3代表独立派。我所使用的向量是数据框的一列。可能存在一些类型问题,尽管我已经使用as.numeric()和as.factor()进行了处理。

这是数据框的一个示例(请注意,在代码中可以看到,我对列Q7感兴趣):

  Q6 Q7 Q8 Q9
3 30  3  5  1
4 30  3  5  1
5 65  3  2  2
6 29  3  5  1
7 23  1  4  1
8 24  1  5  1

这是我一直在尝试的代码:

install.packages('ggplot2')
library(ggplot2)

# pie graph for party
pie <- ggplot(data=data, aes(x = as.factor(data$Q7), fill = factor(cyl)))
pie + coord_polar(theta = "y")
它返回一个错误:“图中没有层”
谢谢帮忙!

要显示百分比,您可以转到另一个问题:https://dev59.com/el_Va4cB1Zd3GeqPUIdi - pandorabob
正如R在其饼图手册中所说:_饼图是一种非常糟糕的信息展示方式。眼睛擅长判断线性尺寸,但不擅长判断相对面积。条形图或点图是显示此类数据的首选方式。_他们参考了Cleveland等人的观点(1985年)。强烈推荐使用。 - MS Berends
1个回答

28

ggplot中的极地图基本上是转换后的堆叠条形图,因此您需要使用geom_bar才能使其正常工作。我们将使用一个单一组(x = factor(1))将所有值组合在一起,并在感兴趣的列上使用fill来划分区域。此时,您将获得一个带有单个条形的条形图。

bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1)
bar

enter image description here

所有剩下的就是添加 coord_polar

pie <- bar + coord_polar(theta = "y")
pie

enter image description here

您可以添加theme_void()以删除轴和标签:
pie + coord_polar(theta = "y") + theme_void()

enter image description here



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接