ggplot结合ggmap中stat_density2d的密度多边形着色需求
给ggmap中的密度多边形添加着色效果
嗨,这事儿很容易解决!你当前的代码已经能生成密度多边形了,只需要给stat_density2d加上填充颜色的映射,再调整下细节就能实现你要的着色效果。
直接用下面修改后的代码就行:
library(ggmap) datParts = read.csv("smili_parts.csv", header=T, stringsAsFactors = TRUE) SEmap = get_map(location = "thailand", zoom=3) ggmap(SEmap) + # 保留原来的密度线 geom_density2d(data=datParts, aes(x=q3b_longitude, y=q3b_latitude), size=0.3) + # 修改stat_density2d,添加填充和透明度 stat_density2d( data=datParts, aes(x=q3b_longitude, y=q3b_latitude, fill = ..level..), # 将密度等级映射为填充色 size=0.01, bins=16, geom="polygon", alpha=0.5 # 设置透明度,避免完全遮挡底图 ) + # 自定义渐变配色,从低密度到高密度的颜色过渡 scale_fill_gradient(low = "lightblue", high = "darkred")
关键改动说明:
fill = ..level..:这里的..level..是stat_density2d生成的内部变量,代表密度的层级,把它映射到填充色后,不同密度的多边形会自动呈现不同颜色alpha=0.5:适当降低透明度,让底图和密度多边形都能清晰显示,你可以根据需求调整这个数值(0完全透明,1完全不透明)scale_fill_gradient:用来定义颜色渐变的方向,你可以替换成任何你喜欢的颜色组合,比如low = "green", high = "orange"
如果想要更专业、色盲友好的配色,推荐用viridis色系替换scale_fill_gradient:
scale_fill_viridis_c(option = "magma")
这样生成的图既美观又能保证信息的可读性~
内容的提问来源于stack exchange,提问作者user438383
相关产品推荐
相关产品推荐

