结果图
图形解读
此图使用双坐标的形式来展示数据,并且根据性别添加拟合曲线,作为基础图无多大新意,此图柱图使用Number of Incidence数据绘制而置信区间则使用Incidence Rate绘制
数据读取
dff <- read_tsv("Global_Incidence.tsv")
数据可视化
dff %>% ggplot(aes(age,val,fill=sex))+ # 使用ggplot2进行绘图,设定x轴为age,y轴为val,填充颜色为sex
geom_bar(data=dff %>% filter(metric=="Number"),
stat="identity",
position = position_dodge())+ # 绘制柱状图,数据过滤metric为"Number",使用position_dodge()来调整柱子的间距
geom_errorbar(data=dff %>%filter(metric=="Number"),
aes(ymin=lower,ymax=upper),width=0.1,
position=position_dodge(width=0.9))+ # 绘制误差条,数据过滤metric为"Number",调整误差条宽度和位置
scale_y_continuous(
sec.axis = sec_axis(~.,name="Number of Incidence"),
expand= expansion(mult = c(0,0.1)),
labels = function(sec_axis) sec_axis/500)+ # 设置y轴,添加次坐标轴,并缩放标签
geom_line(data=dff %>% filter(metric=="Rate") %>%
mutate(val=val*500),
aes(group=sex,x=age,y=val,color=sex),
show.legend = F)+ # 绘制线图,数据过滤metric为"Rate",并将val乘以500,分组为sex
geom_ribbon(data=dff %>% filter(metric=="Rate") %>%
mutate(val=val*500,lower=lower*500,upper=upper*500),
aes(group=sex,x=age,y=val,ymin=lower,ymax=upper,
fill=sex),
alpha=0.3)+ # 绘制带状区域,数据过滤metric为"Rate",并将val, lower, upper乘以500,设置透明度
scale_color_manual(values = c("#9986A5","#7294D4"))+ # 手动设置线条颜色
scale_fill_manual(values=c("#00A08A","#F98400"))+ # 手动设置填充颜色
labs(y="Incidence Rate")+ # 设置y轴标签为"Incidence Rate"
guides(x.sec="axis")+ # 添加次坐标轴
theme_test()+ # 使用theme_test()主题
#设置主题细节,如轴标题、轴线、刻度线、图例位置等
theme(axis.title.y.right = element_text(size=10),
axis.title.y.left = element_text(size=10,color="black"),
axis.text.y.left = element_text(color="black"),
plot.margin = unit(c(1,1,1,1),unit="cm"),
axis.ticks.length.y.right = unit(0.2,"cm"),
axis.ticks.length.y.left = unit(0.2,"cm"),
axis.line.y.left = element_line(color="black"),
axis.ticks.y.left = element_line(color="black"),
axis.line.y.right = element_line(color="black"),
axis.ticks.y.right= element_line(color="black"),
axis.ticks.x.bottom = element_blank(),
axis.ticks.x.top = element_blank(),
axis.text.x.top = element_blank(),
axis.text.x.bottom = element_text(color="black"),
axis.line.x.top = element_line(color="black"),
axis.title.x.bottom = element_blank(),
legend.title = element_blank(),
legend.background = element_blank(),
legend.key = element_blank(),
legend.position =c(0.05,0.9))