You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何修改stat_density2d的密度曲面颜色?

解决R中ggmap热力图密度曲面颜色修改问题

你遇到的问题核心是:color="red"设置的是瓦片的边框颜色,而非密度曲面的填充色。要修改密度区域的填充颜色,需要通过调整填充色的渐变映射来实现,以下是具体方法:

方法1:单色红色渐变(区分密度高低)

如果想要呈现从浅红到深红的渐变效果,对应密度从低到高,使用scale_fill_gradient()函数指定起始色和结束色:

ggmap(map_sf) +
  stat_density2d(data = sf_crime, aes(x = lon, y = lat, fill = ..density..), 
                 geom = 'tile', contour = F, alpha = .5) +
  scale_fill_gradient(low = "#ffcccc", high = "#ff0000")

方法2:使用预设红色系调色板

借助scale_fill_distiller()调用RColorBrewer的红色系调色板,快速实现专业配色:

ggmap(map_sf) +
  stat_density2d(data = sf_crime, aes(x = lon, y = lat, fill = ..density..), 
                 geom = 'tile', contour = F, alpha = .5) +
  scale_fill_distiller(palette = "Reds", direction = 1)
  • direction=1表示颜色从浅到深对应密度从低到高,改为-1则反转对应关系。

方法3:自定义多色红色渐变

如果需要更精细的颜色分段,用scale_fill_gradientn()指定多个过渡色:

ggmap(map_sf) +
  stat_density2d(data = sf_crime, aes(x = lon, y = lat, fill = ..density..), 
                 geom = 'tile', contour = F, alpha = .5) +
  scale_fill_gradientn(colors = c("#fff5f5", "#fc8d59", "#d73027"))

额外说明

  • 若不需要区分密度高低,只想让所有密度瓦片显示单一红色,可将fill从aes()中移出,设置为固定值:
ggmap(map_sf) +
  stat_density2d(data = sf_crime, aes(x = lon, y = lat), 
                 geom = 'tile', contour = F, alpha = .5, fill = "red")

但这种方式会丢失密度差异的可视化信息,仅在特殊场景下适用。

内容的提问来源于stack exchange,提问作者DiamondJoe12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:33:15