美文网首页
【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