我有一个值向量,我想将其显示为饼图。矢量由1,2和3组成,我希望我的饼图显示矢量中1,2和3的百分比以及区域的标签。 1是民主党人,2人是共和党人,3人是独立党人。我一直在使用的向量是数据帧的列。可能存在一些类型问题,尽管我使用as.numeric()和as.factor()传递了它。
以下是df的一个示例(注意,正如您在代码中看到的那样,我在第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")
它返回一个错误:'绘图中没有图层'
感谢您的帮助!
答案 0 :(得分:26)
ggplot中的极坐标图基本上是变换堆积条形图,因此您需要geom_bar
才能使其正常工作。我们将使用单个组(x = factor(1)
)将所有值组合在一起,并在感兴趣的列上fill
来划分区域。此时,您将获得一个带有单个条形图的条形图。
bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1)
bar
剩下的就是添加coord_polar
:
pie <- bar + coord_polar(theta = "y")
pie
您可以添加theme_void()
来放置轴和标签:
pie + coord_polar(theta = "y") + theme_void()