前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R可视乎|饼图

R可视乎|饼图

作者头像
庄闪闪
发布2021-04-09 10:53:46
1.4K0
发布2021-04-09 10:53:46
举报
文章被收录于专栏:庄闪闪的R语言手册

饼图(pie chart)被广泛地应用于各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个切片,整个圆饼代表数据的总量,每个切片(圆弧)表示该分类占总体的比例,所有切片(圆弧)的加和等于100%。

下面会介绍两种在R中实现饼图的方法。

graphics包绘制饼图

代码语言:javascript
复制
library(RColorBrewer)
library(dplyr)
library(graphics)
library(ggplot2)

init.angle可设定饼图的初始角度,labels可添加标签。颜色用了brewer.pal 函数,第一个参数为个数,第二个参数为名字,这里用的是BrBG,具体可help 一下。首先我们构造一个模拟数据,如下所示,并用dplyr包中的arrange()进行排序(默认从小到大),faction表示数值所占比例,ymax进行累积占比,总值为1。

代码语言:javascript
复制
df <- data.frame(value = c(24.20,30.90,12.50,12.30,8.10,12.10),
group = c('LVS','SJM','MCE','Galaxy','MGM','Wynn'))
df <-arrange(df,value)

这里做了两种类型的标签,下面两图就是根据不同标签绘制的。labs包含了百分比和名字,中间用\n来分行;lab则只包含百分位数。以下为两种不同标签的结果,为了区分,使用rewer.pal()函数将颜色进行变换。

代码语言:javascript
复制
labs <- paste0(df$group," \n(", round(df$value/sum(df$value)*100,2), "%)") #标签
lab <- paste0(round(df$value/sum(df$value)*100,2), "%") #标签
pie(df$value,labels=labs, init.angle=90,col =  brewer.pal(nrow(df), "BrBG"),
    border="black")
pie(df$value,labels=lab, init.angle=90,col =  brewer.pal(nrow(df), "Blues"),
    border="black")

ggplot2 包绘制饼图

使用R中ggplot2包的geom_bar()函数绘制堆积柱形图,然后将直角坐标系转换成极坐标系,就可以显示为饼图,但还是需要使用geom_text()函数添加数据标签。注意的是:ymax,ymin也需要自己计算得到。

代码语言:javascript
复制
df$fraction = df$value / sum(df$value)
df$ymax = cumsum(df$fraction)
df$ymin = c(0, head(df$ymax, n = -1))
ggplot(data = df, aes(fill = group, ymax = ymax, ymin = ymin, xmax = 4, xmin = 3)) +
geom_rect(show.legend = F,alpha=0.8) +
scale_fill_brewer(palette = 'Set3')+
coord_polar(theta = "y") +
labs(x = "", y = "", title = "",fill='地区') +
theme_light() +
theme(panel.grid=element_blank()) + ## 去掉白色外框
theme(axis.text=element_blank()) + ## 把图旁边的标签去掉
theme(axis.ticks=element_blank()) + ## 去掉左上角的坐标刻度线
theme(panel.border=element_blank()) + ## 去掉最外层的正方形边框
geom_text(aes(x = 3.5, y = ((ymin+ymax)/2),label = labs) ,size=3.6)

但是可以看到:由于缺乏饼图与数据标签之间的引导线,总感觉美观度不够,所以推荐使用graphics包的pie()函数绘制饼图。

代码以及资料存在我的github上,可见文末原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • graphics包绘制饼图
  • ggplot2 包绘制饼图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档