如何使用ggplot2生成饼图?

时间:2013-12-07 14:48:53

标签: r ggplot2

我有一个值向量,我想将其显示为饼图。矢量由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")

它返回一个错误:'绘图中没有图层'

感谢您的帮助!

1 个答案:

答案 0 :(得分:26)

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