ggplot2包中没有专门的绘制饼图的函数,所以得先绘制条形图,再转换成极坐标形式以实现饼图的绘制:
library(ggplot2)
ggplot(df, aes(x="", y = value, fill = group)) #数据
geom_bar(width = 1, stat = "identity",color="white") #绘制柱状图
coord_polar('y') #变为极坐标
theme_void() #主题
scale_fill_manual(values=rainbow(5)) #自定义颜色
geom_text(aes(y = sum(value)-cumsum(value) value/2,
label = scales::percent(value/sum(value))), size=4.5)#标签
基于ggstatsplot包中的ggpiestats()函数进行绘制,但是这个包使用的数据是不需要统计频数的,直接使用原始数据绘图即可:
#以数据集mtcars为例
df1<-mtcars
library(ggstatsplot)
ggpiestats(df1, 'vs', #数据
direction = 1, #方向,通过1和-1调整
title = "Pie",#标题
factor.levels = df1$vs,#标签
slice.label = 'percentage',#标签类型,percentage/counts/both
perc.k = 2,#百分数小数位数
results.subtitle = T) #标题是否显示统计结果