模仿柳叶刀期刊文献横向森林图的绘制-基于R语言ggplot2包

学术   2024-08-09 17:50   陕西  

参考文献:The association between education and premature mortality in the Chinese population: a 10-year cohort study

介绍:上述文献研究了文化程度与死亡的关系,文中的图3给出了男性、女性文化程度和死亡的森林图,如下所示:

本文目的:参考上述图片,复现上述森林图,我们将生成以下森林图:

自变量:受教育程度:分为低、中、高,以高为参照

因变量:全死因、心血管死亡、癌症、糖尿病、慢性呼吸系统疾病、其他死亡

分别有全人群、男性、女性与上述死亡的森林图   

 

森林图的绘制有四大步骤:

1是整理数据,了解上述森林图数据的整理形式,这里很关键

2导入R数据,然后进行整理

3绘图(分5小步)

4.输出图片     

 

    

实践操作:

一步:掌握数据的整理形式。整理的数据情况如下:

ggplot绘图的数据和原始数据整理差不多,不过这里是HR的值。

思考一下:这个森科图用的变量是不是就是以下呢?

性别、文化程度、HR估计值,HR的下限、HR的上限,具体如下:   

 

      

 

数据导入R中后又分为三步完成:代码如下:

.libPaths()#查看R包位置.libPaths("D:/Program File/R/R-4.3.2/library")#定义包安装位置setwd("E:/02学习/经验/03R语言图形绘制/15模仿柳叶刀期刊文献横向森林图的绘制-基于R语言ggplot2包")#设置工作空间getwd()#加载工作空间#读取要用的包library(ggplot2)library(dplyr)

####第一步:数据整理

##导入数据    data<-read.csv("fiture12.csv",               as.is = TRUE,header = T,sep = ",", fileEncoding='utf-8')#定义顺序data$Education<-factor(data$Education,levels = c("Less than primary",                                     "Primary",                                     "Lower secondary",                                     "Upper secondary and above"))data$Gender<-factor(data$Gender,levels = c("Male","Female"))           

##第二步:绘制图

#提供一个基本图:p <- ggplot(data = data)p#geom_errorbar():默认是画竖直方向的误差线,比如在条形图上面添加误差线这种画法,需要提供x,ymin和ymax,确定误差线上下两个端点的位置;#geom_errorbarh():默认是画水平方向的误差线,需要提供y,xmin和xmax`,确定误差线左右两个端点的位置。p1<-p + geom_point(aes(x = Education, y = estimate),size=2)+#中间的点  #增加竖误差棒  geom_errorbar(aes(x = Education,ymin = lower, ymax = upper),                width = 0.1, # 控制上下两条短横线的长短                size = 1)+ # 控制线条整体粗细  #############################2.修饰图形背景部分1########################################  ##设置分面,且每个分页有坐标轴  facet_wrap(~Gender, scales = "free")+  ##删除灰色背景  theme_bw()+  theme(legend.position = "none",#去除图例            #panel.grid.major = element_blank(),#去除主要网格        #panel.grid.minor = element_blank(),#去除次要网格        panel.grid = element_blank() #删除网格  )+  #############################3.修饰坐标轴部分########################################  ###仅保留x/y轴  theme(panel.border = element_blank(), axis.line = element_line())+  #y轴添加一条虚线  geom_hline(yintercept = 1,linetype=2,col="black")+  #y轴标题  ylab("Hazard Ratio")+  ##设置分面后所有y轴的范围:放到后面  coord_cartesian(ylim = c(0, 3)) +    #############################4.修饰背景部分2########################################  ##去除分面后的灰色  theme(    strip.background = element_rect(      color = "white", fill = "white"),    panel.grid = element_blank())p1  #############################5.添加文本:文本不分开,位置固定###############p1<-p1+geom_text(aes(x=Education,y=estimate,label=estimate),            vjust=-0.5,hjust=-0.3,            size=3)  p1


#####第三步:保存图片

ggsave(filename = "fiture12.png",#命名           plot=p1,#哪张图       path = "E:/02学习/经验/03R语言图形绘制/15模仿柳叶刀期刊文献横向森林图的绘制-基于R语言ggplot2包",       #保存路径       units="in",       width = 15,#宽度       height = 6 #高度)

本文的原始数据如下:关注一下呗

20240810.xlsx

流病统计与科研学习笔记
流行病与卫生统计学专业主要分享基于SAS、R以及其他统计软件实现各种统计学方法和结果绘图,提高自己的学习能力
 最新文章