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
相关产品推荐
相关产品推荐

