热力图是在科研过程中经常会使用到的,如对多组相关系数的可视化。本文介绍基于ggplot2包和pheatmap包进行热力图的绘制。
数据格式如下:
基于ggplot的热力图绘制
library (ggplot2)
library (reshape2)
setwd("D:/example/") #设定数据的存放路径
data1<-read.csv('a4.csv',header = TRUE) #读取文件
data2<- melt (data1, id="Month") #转化成长数据集
data2$variable= factor(data2$variable, levels=c('EL10_TMP','EL14_TMP','EL18_TMP','EL10_PRE','EL14_PRE','EL18_PRE','EL10_PDSI','EL14_PDSI','EL18_PDSI')) #设置顺序
data2$Month= factor(data2$Month, levels=c('P.Jun','P.Jul','P.Aug','P.Sep','P.Oct','P.Nov','P.Dec','C.Jan','C.Feb','C.Mar','C.Apr','C.May','C.Jun','C.Jul','C.Aug','C.Sep','C.Oct')) ## 设置顺序
p1<-ggplot(data2,aes(x=Month,y=variable,fill=value)) #热力图绘制
p2<-p1+geom_raster()+ scale_fill_gradient2(low="red", high="darkgreen", mid="white") #填充不同的颜色
结果如下所示:
针对里面的字体和文字大小等的设置可参考《基于ggplot2的常用柱状图模板的设置》,或将该图输出为pdf后,在pdf编辑中进行编辑。
基于pheatmap包的绘制
数据格式如下:
注意:数据来源与上面一致,但在这里首先是在excel中调整了列的顺序,让顺序和上面中代码的顺序保持一致了。同时去掉了Month这一列。
代码如下
library(pheatmap)
library(RColorBrewer)
setwd("D:/example/")
data1<-read.csv('a4.csv',header = TRUE)
pheatmap(data1)
p3<-pheatmap(data1,
color=brewer.pal(11,"PRGn"),
cellwidth = 20,
cellheight = 10,
cluster_rows = FALSE,
cluster_cols = FALSE,
labels_row=c('P.Jun','P.Jul','P.Aug','P.Sep','P.Oct','P.Nov','P.Dec','C.Jan','C.Feb','C.Mar','C.Apr','C.May','C.Jun','C.Jul','C.Aug','C.Sep','C.Oct'),
fontsize = 12,
#display_numbers = TRUE,
number_color = "black",
)
出来的结果如下:
如果对颜色的配置不满意,可改变color=brewer.pal(11,"PRGn")中的"PRGN",该里面的参数含义如下图
改变color=brewer.pal(11,"PRGn")中的"PRGN"为BrBG则呈现如下效果
详细可参考https://blog.csdn.net/chang349276/article/details/77476848
更多需求,请查看个人介绍