如何在R语言geom_raster中修改热图配色为黄红方案
解决黄红配色热图的问题
嘿,我一眼就看出问题所在啦——你搞混了ggplot里的填充色和线条/点颜色的美学映射!
你的代码里用了geom_raster(aes(fill = value)),这说明你是靠fill这个美学来控制热图单元格的颜色,但你后续用的是scale_colour_gradient2——这个函数是用来调整colour美学的(比如点、线的颜色),对fill完全不起作用,所以你的热图还是用了默认的蓝系配色。
修正后的代码
只需要把scale_colour_gradient2换成对应的填充色缩放函数就行,这里推荐两种方案:
方案1:黄到红的单方向渐变(最直接)
a <- as.matrix(volcano, ncol = ncol(volcano)) row.names(a) <- 1:nrow(a) library(reshape2) a1 <- melt(a) colnames(a1) <- c('X','Y','value') library(ggplot2) ggplot(a1, aes(x = X, y = Y)) + geom_raster(aes(fill = value), interpolate = TRUE) + scale_fill_gradient(low = "yellow", high = "red", guide = "colorbar")
方案2:带过渡色的双色渐变(可选,更有层次)
如果想要中间加橙色过渡,或者基于数据中值设置中点,可以用scale_fill_gradient2:
ggplot(a1, aes(x = X, y = Y)) + geom_raster(aes(fill = value), interpolate = TRUE) + scale_fill_gradient2(low = "yellow", mid = "orange", high = "red", midpoint = median(a1$value), guide = "colorbar")
关键知识点
fill:控制图形内部的填充颜色(比如热图单元格、柱状图柱子)colour:控制图形的边框/线条/点的颜色- 对应的缩放函数要和美学映射匹配:
fill对应scale_fill_*,colour对应scale_colour_*
内容的提问来源于stack exchange,提问作者Raghav Agarwal
相关产品推荐
相关产品推荐

