哑铃图(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() 可以将图片翻转为竖着的哑铃图。