热图算是各种途中有点复杂的一类图,但是其实画起来并不难。本文中的代码参考了《R数据可视化手册》的13.6,并在此基础上加以改进。
1.数据准备
1 | pres_rating <- data.frame( |
2.画图
1 | library(ggplot2) |
代码 | 作用 |
---|---|
theme(panel.background = element_blank(),axis.line = element_line(colour=”black”)) | 将ggplot的默认的灰色背景去掉,坐标轴线为黑色 |
theme(axis.ticks.x = element_blank()) | 去掉X轴的轴须 |
theme(axis.title.y=element_blank()) | 去掉y轴标题 |
theme(legend.title=element_blank()) | 去掉图例的标题 |
geom_raster() | 绘制热图,geom_raster()效率更高,也可用geom_tile() 参数更多 |
3.修改热图的颜色
在ggplot2
默认的热图颜色中,颜色由浅入深代表数字由高到低,这种颜色显示方式多少与我们的习惯相反。因此我们经常需要修改热图的颜色,例如我们想修改成这篇文献里的这幅图
的颜色。可以用取色器获取这些颜色的RGB
号,然后就可以添加到图里:
1 | p <- ggplot(pres_rating, aes(x=year, y=quarter, fill=rating))+ |
其中scale_fill_gradient2(low = "#5E4EA2", high = "#9E0041",mid="#FBFCB5",midpoint=60)
的命令中
命令 | 作用 |
---|---|
scale_fill_gradient2 | 三色渐变,由中间色、两端色渐变而成,此外还有scale_fill_gradient为两色渐变,scale_fill_gradientn为等间隔的n种颜色 |
low = “#5E4EA2”和high = “#9E0041” | 根据取色器取到的两端的颜色 |
mid=”#FBFCB5” | 中间的颜色 |
midpoint=60 | 设置中间点 |
参考
v1.5.2