美文网首页
【R语言】--- 饼状图

【R语言】--- 饼状图

作者: 生态数据 | 来源:发表于2021-07-24 23:47 被阅读0次

概述

饼状图,又称为饼图,能够划分几个扇形的圆形统计图。可以描述量、频率、占比的相对关系。R语言中,可以用graphics包的pie()函数、ggplot2包的geom_bar()配合coord_polar()函数绘制,3D 的饼状图,可以使用 plotrix包的pie3D()函数。本文详细介绍饼状图的绘制。

graphics包的pie()函数

基本用法

pie(x, labels = names(x), edges = 200, radius = 0.8,
    clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
    density = NULL, angle = 45, col = NULL, border = NULL,
    lty = NULL, main = NULL, …)

具体参数

x: 数值向量,表示每个扇形的面积
labels: 字符型向量,表示各扇形面积标签
edges: 多边形的边数(圆的轮廓类似很多边的多边形)
radius: 饼图半径
main: 饼图标题
clockwise: 逻辑值,用来指示饼图各个切片是否按顺时针做出分割
angle: 设置底纹的斜率
density: 底纹的密度,默认值为 NULL
col: 是表示每个扇形的颜色,相当于调色板

案例

#创建数据
x <- c(22, 18, 52)
#定义标签
labels <- c("乔木", "灌木", "草本")
#绘制基本饼状图
pie(x, labels, main="不同类型植被占比")
par(mfcol=c(1,2))
#填充颜色(默认)
pie(x, labels, main="不同类型植被占比", col = rainbow(length(x)))

#填充颜色(自定)
cols = c("blue","red","grey")
pie(x, labels, main="不同类型植被占比", col = cols)
#计算占比
piepercent<- paste(round(100*x/sum(x), 2), "%")
#查看计算结果
piepercent
#绘制占比图
pie(x, labels = piepercent, main = "不同类型植被占比",col = rainbow(length(x)))
#添加标签
legend("topright", c("乔木", "灌木", "草本"), cex = 1,
       fill = rainbow(length(x)))

ggplot2包绘制

#加载ggplot2包
library(ggplot2)
##先绘制柱状图
bp<- ggplot(df, aes(x="", y=x, fill=labels))+
  geom_bar(width = 1, stat = "identity")
#查看一下柱状图
bp
##再绘制原始饼状图
pie<-bp + coord_polar("y", start=0)
#查看饼状图
pie
#美化/出图
pie +
  theme(axis.text.x=element_blank()) +
  geom_text(aes(y = x/3 + 
                  c(0, cumsum(x)[-length(x)]), 
                label = piepercent), size = 6)
#饼状图周围有数字,我们删掉它
#这里我们需要使用scales包
#调用scales包
library(scales)
#出图
pie +  theme_minimal() +
  theme(axis.text.x=element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank()) +
  geom_text(aes(y = x/3 + c(0, cumsum(x)[-length(x)]), 
                label = piepercent), size=5)

3D饼状图 plotrix包pie3D()函数

# 载入 plotrix
library(plotrix)
pie3D(x,labels = labels, explode = 0.1, main = "不同类型植被占比(3D图)")
#进一步美化
pie3D(x,labels = piepercent, explode = 0.1, main = "不同类型植被占比(3D图)")
#添加标签
legend("topright", c("乔木", "灌木", "草本"), cex = 1,
       fill = rainbow(length(x)))

参考文献

[1] Robert I. Kabacoff (著). R语言实战(高涛/肖楠/陈钢 译). 北京: 人民邮电出版社.
[2] https://www.runoob.com/r/r-pie-charts.html
[3] https://zhuanlan.zhihu.com/p/80415566

相关文章

网友评论

      本文标题:【R语言】--- 饼状图

      本文链接:https://www.haomeiwen.com/subject/piyimltx.html