ggplot2实现哑铃图

2020-05-18 15:46:33 浏览数 (1)

哑铃图(Dumbbell Chart),也叫DNA图。当我们想要比较不同指标不同组的情况可用多个“哑铃”表示。另外,如果想表示某一组在不同条件下的变化情况也可以用这种方法。哑铃图如下图所示:

在R中实现可以考虑用ggalt这个包(基于ggplot2)。以下实现基础作图:

代码语言:javascript复制
library(ggalt)

health <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/health.csv")
health$Area <- factor(health$Area, levels=as.character(health$Area))
ggplot(health, aes(x=pct_2013, xend=pct_2014, y=Area))   
        geom_dumbbell()

进行一些小小的修饰:

代码语言:javascript复制
ggplot(health, aes(x=pct_2013, xend=pct_2014, y=Area))   
        # 以下geom_segment是自己添加了x到xend之间的线,取代了之前默认的线;并且把颜色设置为灰色;
        geom_segment(aes(x=pct_2013, 
                         xend=pct_2014, 
                         y=Area, 
                         yend=Area), 
                     color="#b2b2b2", size=1.5) 
        # 设置哑铃的两端点的颜色和大小
        geom_dumbbell(size_x=3.5, 
                      size_xend = 3.5,
                      colour_x="#edae52", 
                      colour_xend = "#9fb059") 
        labs(x=NULL, y=NULL, 
             title="Dumbbell Chart", 
             subtitle="Pct Change: 2013 vs 2014") 
        # 添加文本信息
        geom_text(color="black", size=2, hjust=-0.5,
                  aes(x=pct_2013, label=pct_2013)) 
        geom_text(aes(x=pct_2014, label=pct_2014), 
                  color="black", size=2, hjust=1.5)

最后加上 coord_flip() 可以将图片翻转为竖着的哑铃图。

0 人点赞