天天看点

echart 圆饼图 显示单位_R可视乎|饼图

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

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

graphics包绘制饼图

library(RColorBrewer)library(dplyr)library(graphics)library(ggplot2)
           

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

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)
           
echart 圆饼图 显示单位_R可视乎|饼图

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

labs $group,lab $value/sum(dfpie(df$value,labels=labs, init.angle=90,col =  brewer.pal(nrow(df), "BrBG"),    )pie(df$value,labels=lab, init.angle=90,col =  brewer.pal(nrow(df), "Blues"),    )
           
echart 圆饼图 显示单位_R可视乎|饼图
echart 圆饼图 显示单位_R可视乎|饼图

ggplot2 包绘制饼图

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

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)
           
echart 圆饼图 显示单位_R可视乎|饼图

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

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