如何使用ggplot2生成饼图?

gol*_*ine 18 r ggplot2

我有一个值向量,我想将其显示为饼图.矢量由1,2和3组成,我希望我的饼图显示矢量中1,2和3的百分比以及区域的标签.1是民主党人,2人是共和党人,3人是独立党人.我一直在使用的向量是数据帧的列.虽然我使用as.numeric()和as.factor()传递了它,但可能存在一些类型问题.

这是df的一个例子(注意,正如你在代码中看到的那样,我在第7章中有所讨论):

  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
Run Code Online (Sandbox Code Playgroud)

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

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")
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助!

zer*_*323 27

ggplot中的极坐标图基本上是变换堆积条形图,因此您需要geom_bar使其工作.我们将使用单个组(x = factor(1))将所有值组合在一起并fill在感兴趣的列上划分区域.此时,您将获得一个带有单个条形图的条形图.

bar <- ggplot(data, aes(x = factor(1), fill = factor(Q7))) + geom_bar(width = 1)
bar
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

剩下的就是添加coord_polar:

pie <- bar + coord_polar(theta = "y")
pie
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您可以添加theme_void()到拖放轴和标签:

pie + coord_polar(theta = "y") + theme_void()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述