继上一章双Y轴图之后,进行本章热力图的绘制。日常工作中,热力图可以直观地表现数据的分布情况,通过颜色的深浅和亮度的变化,可以让人更好地理解数据密集程度和趋势。尤其是在公共卫生领域,对于大样本量流行病学数据进行更好且直观的可视化展示。
热力图绘制
本次热力图的绘制采用GBD数据库中下载的美国各州女性乳腺癌DALY数据,具体数据下载使用方法已在前面的文章中说明。
分布详细代码
纳入软件包
rm(list = ls())
setwd("f://gbd绘图")
##载入所需软件包##
library(ggplot2)
library(RColorBrewer)
library(ggpubr)
library(readxl)
library(dplyr)
library(tidyr)
library(stringr)
library(purrr)
数据整理
#########绘图前数据整理##########
d<-read.csv("IHME-GBD_2019_DATA-BREAST-CANCER.csv")
###自定义排序-###
mydata<-select(d,location_id,location_name,year,val)%>%arrange(location_id,year)%>%select(location_name,year,val)%>%rename(DALY=val)
mydata$year<-as.factor(mydata$year)
###定义因子水平进行排序(未对待绘图数据进行排序)——————factor###
ll<-filter(mydata,year==1990)$location_name
mydata$location_name<-factor(mydata$location_name,level=rev(ll))
##上一步未对原始数据进行排序,需要新定义一个待排序的因子ll,用“factor”函数依据因子ll的顺序将数据变量转换为绘图所需因子型变量##
##绘图前查看一下数据值范围,以便于调节图例##
filter(mydata,!str_detect(location_name,"United"),year==1990)%>%select(DALY)%>%summary%>%print()
绘制热力图
####绘制热力图####
heatmap <- ggplot(mydata,aes(year,location_name))+ #设置x、y轴
geom_tile(aes(fill=DALY),color="white")+ #按照“DALY”数值填充颜色
scale_fill_gradientn("Age-standardized \n DALY case",limits = c(1000, 100000), # 数据上下限
breaks = c(10000,20000, 30000, 40000, 50000,60000, 70000, 80000,90000,100000,200000,2000000), # 分段点
colors = c("navyblue", "blue", "royalblue", "white",
"goldenrod","orange", "firebrick","red4","red","green","black" )) +# 颜色域
labs(x="Year",y="state",title = "")+ #设置标题,删除x、y轴标题
theme_classic()+ geom_text(aes(x=year,y=location_name,label=sprintf("%0.0f",round(DALY, digits = 0))),color="black",size=2)##sprintf函数在此定义输出字符的数量和位数##
heatmap
ggsave("DALY热图.jpeg",plot =heatmap, dpi=600, width=13, height=8)