图形化展示比值比和可信区间数据的另一种方式

R

科研作图

其实一类数据的展示方式有多种,可以用表格的形式展示,也可以用图的形式来展示。两种方式各有优缺点,表格可以展示信息量比较丰富的数据,但是不太直观;而图的展示方式比较直观,但是展示的信息量有限。所以,我们在选择展示方式时,需要平衡这两者之间的关系。

我们在前面的一篇博文中介绍了利用森林图的方式展示比值比数据,这种方式对于展示多个不同类型变量,不同亚组的比值比数据比较有优势,但是如果我们的研究结果变量类型比较单一的话,也可以试试我们下面一种展示方式。

首先,我们生成一组比值比可信区间数据,包含5个变量:group分组1,2,3,4分别代表Q1、Q2、Q3和Q4;type:指标类型,1代表PM10,2代表PM2.5;value代表OR值,lower和upper分别代表95%可信区间的下限和上限。

然后,我们把group和type两个变量因子化,并添加相应的值标签,这样标签数据就可以显示到图上。

library(dplyr)
df <- data.frame(
  group=c(1,2,3,4,1,2,3,4),
  type=c(rep(1,4),rep(2,4)),
  value = c(0.5, 2, 1.5, 1.8, 0.9,1.2,1.4,1.6),
  upper = c(0.8,2.5, 1.9, 2.6,1.1,1.4,1.8,2.0),
  lower = c(-0.3, 1.0, 1.1, 0.1,0.7,1.1,1.2,1.3)
)

df<-df%>%mutate(group=factor(group,labels=c("Q1","Q2","Q3","Q4")),
                type=factor(type,labels=c("PM10","PM2.5")))

我们可以利用ggplot2的geom_point函数绘制OR值的点,利用geom_errorbar函数绘制95%可信区间的上下限值,利用geom_hline函数绘制参考线,然后利用facet_wrap函数把两个指标的图绘制到一张图上。

library(ggplot2)
df%>%ggplot(aes(x=group,y=value))+
  geom_point(aes(colour=type),shape="square",size=3)+
  geom_hline(aes(yintercept=1),linetype=8)+
  geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.1)+
  scale_y_continuous(breaks = seq(-1, 3, by = 0.5)) +
  facet_wrap(~type)+
  labs(x = "Hypertension", y = "Adjusted OR and 95% CI")+
  theme_classic()+
  theme(
    strip.text.x = element_blank(),
    legend.position = c(0.1,0.9),
    legend.title =  element_blank()
  )->pp
Warning: A numeric `legend.position` argument in `theme()` was deprecated in ggplot2
3.5.0.
ℹ Please use the `legend.position.inside` argument of `theme()` instead.
ggsave("ratio.png")
Saving 7 x 5 in image

比值比图

上图就是我们最终的结果。R的绘图功能很强大,很灵活,可以实现很精确的绘图,让我们坚持每天学一点科研作图吧!

陈琼博士

陈 琼

博士 副主任医师

他从事肿瘤登记与人群流行病学研究,编写肿瘤登记年报,并开发和维护个人网站。他撰写博文,分享数据分析方法、可视化技巧和自动化报告解决方案,同时学习 R 语言,开发 R 包,不断探索高效的数据处理与展示方式。 🚀

回到顶部