可视化:Dumbbell Chart
2024-04-10 02:20:34  阅读数 635

  哑铃图(Dumbbell Chart),外形类似哑铃,两个值分别位于哑铃的一端,然后用一根线连接。一般用于展示同一变量不同分组的两个值,可以直观地展示分组之间的相对变化。

绘图

  哑铃图就是特别的点图,下面先展示直接ggplot2绘图过程,分别绘制前后两个点,然后绘制中间连接的线段,简单的哑铃图就出现了:

library(ggplot2)
library(dplyr)

value1 <- abs(rnorm(26))*2
data <- data.frame(x=LETTERS[1:26], 
                   value1=value1, 
                   value2=value1+1+rnorm(26, sd=1))

p <- ggplot(data) +
           geom_point( aes(x=x, y=value1), color=rgb(0.2,0.7,0.1,0.5), size=3 ) +
           geom_point( aes(x=x, y=value2), color=rgb(0.7,0.2,0.1,0.5), size=3 ) +
           geom_segment( aes(x=x, xend=x, y=value1, yend=value2), color="grey") + 
           coord_flip()+
           theme_bw() +
           theme(legend.position = "none",panel.grid=element_blank()) + 
           labs(x="", y="")
p

结果如下:

ggalt

  即使这样简单的图,也有现成的R包可以使用,真的是相当nice!这样我们可以在其基础上,调整一下风格和颜色,提升一下图的颜值:

library(ggalt)

p <- ggplot(data, aes(x=value1, xend=value2, y=x)) + 
       geom_dumbbell(colour_x = "#b1cb41",  colour_xend = "#45a0e2", size_x = 1.5, size_xend = 1.5, size=0.5, color="gray", dot_guide = T) + 
       geom_point(aes(value1, x, size=value1), alpha=0.5, color="#b1cb41") + 
       geom_point(aes(value2,  x, size=value2), alpha=0.5, color="#45a0e2") + 
       theme_light() + 
       theme(legend.position = "none", panel.grid =element_blank()) + 
       labs(x="", y="")

结果如下:

结束语

  一转眼2023年就来了,虽然有些触不及防,但还是那么理所当然。别的不多说,祝大家,2023,都能脱单!2023,收入翻番!2023,健康平安!


往期回顾

可视化:Arc Diagrams
可视化:circular dendrogram
可视化:和弦图
LACE-seq 保姆级教程
可视化:两种方法绘制桑基图