美文网首页plot
可视化:环状条形图

可视化:环状条形图

作者: 生信云笔记 | 来源:发表于2022-09-17 13:59 被阅读0次

    前言

      条形图算是很常见的数据展示图形之一。今天我们就来说说条形图相关的事情——绘制环状条形图。顾名思义,环状条形图就是将正常排列的条形图绘制成圆形排列,改变一下可视化的呈现方式。

    绘图

      废话不多说了,下面直接展示绘制过程,代码如下:

    library(ggplot2)
    
    # 准备数据
    set.seed(21)
    data <- data.frame(id=seq(1,60),
                       individual=paste( "Mister ", seq(1,60), sep=""),
                       value=sample( seq(10,100), 60, replace=T))
    
    data$angle <- 90 - 360 * (data$id - 0.5) / nrow(data)
    
    ggplot(data,aes(x=as.factor(id),y=value))+
           geom_bar(stat="identity",fill="skyblue")+
           geom_text(aes(x=id,y=value+10,label=individual,hjust=0),color="black",fontface="bold",alpha=0.7,size=2.5,angle=data$angle)+
           theme_minimal()+
           theme(axis.text=element_blank(),axis.title=element_blank(),panel.grid=element_blank())+
           coord_polar(start=0)+
           ylim(-60,120)
    

    结果如下:

      可以看到环状条形图绘制起来还是挺简单的。整个绘图过程最需要注意的地方就是添加外围的标签,让添加的标签跟柱子保持在一条线上。这就要根据每一个柱子极化后的旋转角度来调整标签的旋转角度。默认情况下,标签文字都是水平放置,旋转时如果给定正数角度则从坐标0点逆时针旋转,负数则顺时针旋转。在极坐标系里面,极化后的柱子从坐标0点顺时针旋转排列。对于添加标签的细节,这里拿下图中的Mister1条目来说明一下,该条目的柱子在极坐标系的偏移角度为6(360/60),而标签需要旋转的角度就是84(90-6)。

      大部分人应该会觉得上面第一张图左半边的标签都是底朝上,不符合我们的阅读习惯,看起来很别扭,那该如何调整呢?看下面的代码:

    # 准备数据
    set.seed(21)
    data <- data.frame(id=seq(1,60),
                       individual=paste( "Mister ", seq(1,60), sep=""),
                       value=sample( seq(10,100), 60, replace=T))
    
    angle <- 90 - 360 * (data$id - 0.5) / nrow(data)
    data$hjust <- ifelse(angle < -90, 1, 0)
    data$angle <- ifelse(angle < -90, angle+180, angle)
    
    ggplot(data,aes(x=as.factor(id),y=value))+
           geom_bar(stat="identity",fill="skyblue")+
           geom_text(aes(x=id,y=value+10,label=individual,hjust=hjust),color="black",fontface="bold",alpha=0.7,size=2.5,angle=data$angle)+
           theme_minimal()+
           theme(axis.text=element_blank(),axis.title=element_blank(),panel.grid=element_blank())+
           coord_polar(start=0)+
           ylim(-60,120)
    

    结果如下:

    结束语

      今天说的比较基础的环状条形图,后面再介绍一下复杂一些的环状条形图,如绘制分组堆叠的环状条形图。哦了,今天到此结束~~~

    相关文章

      网友评论

        本文标题:可视化:环状条形图

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