参考文献: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 #高度
)
本文的原始数据如下:关注一下呗