1. 首页
  2. 自学中心
  3. 软件
  4. R

数据帮:地图可视化REmap包-remapH函数及实例

原创:金小贝  QQ交流:675229288

remapH( )函数主要功能是制作热力效果图,与remapC( )只能根据已经分好的行政区域显示不同热力不一样,remapH( )函数可以实现以任意点为中心,通过颜色渐变、泛化达到热力效果,理论上使用和展现相对更加灵活。但是通过实际使用发现很多不理解的地方,可能是个人理解不到位导致,也希望此包的开发者郎大为Chiffon老师有机会能给予指导、指教。

library(REmap)
?remapH
remapH(data,
             maptype = ‘china’,
             theme = get_theme(“Dark”),
             blurSize = 30,
             color = c(‘blue’, ‘cyan’, ‘lime’, ‘yellow’, ‘red’),
             minAlpha = 0.05,
             opacity = 1,
             …)
主要参数说明:
参数一:data为需要的原始数据框格式数据,共3列,经度、纬度、密度,密度值大小将决定热力图颜色深浅
参数二:maptype为地图类型设置,与其他函数一样,可选world、china或者中国省份名称
参数三:theme为主题设置,见之前文章介绍
参数四:bulrSize为从中心到边缘的范围,默认为30
参数五: color为热力图渐变颜色设置
参数六:minAlpha密度值的最小阈值设定,小于这个值的都将以此值对应的热力颜色显示,保证所有项目均有体现
参数七:opacity热力区域透明度,默认为1
掌握好以上参数即可,其他参数比较常规或者之前已经介绍过在此不再赘述。

实例:重庆热力图

#生成重庆经纬度数据

cq <- mapNames(‘chongqing’);cq
baidu_lon <- c()
baidu_lat <- c()
ak <- ‘HuwUWP*******’   #百度地图api的秘钥,需自己申请
library(RCurl)
library(rjson)
for (location in cq) {
  url <- paste(‘http://api.map.baidu.com/geocoder/v2/?ak=’,ak,’&callback=renderOption&output=json&address=’,location,sep=”)
  url_string <- URLencode(url)
  json<- readLines(url_string, warn=F)
  geo <- fromJSON(substr(json,regexpr(‘\\(‘,json)+1,nchar(json)-1))
  lon<-geo$result$location$lng
  lat<-geo$result$location$lat
  baidu_lon <- c(baidu_lon,lon)
  baidu_lat <- c(baidu_lat,lat)
}
data <- data.frame(address=cq,longitude=baidu_lon,latitude=baidu_lat)
head(data)

               address longitude latitude
1 酉阳土家族苗族自治县  108.8068 28.90528
2               奉节县  109.3557 30.95855
3               巫溪县  109.3605 31.50916
4                 开县  108.3893 31.27710
5 彭水苗族土家族自治县  108.2729 29.35963
6               云阳县  108.8632 31.04241
#随机生成密度数据
prob <- sample(1:100,nrow(data))
prob <- prob/(min(prob)+max(prob))
f_data <- cbind(data[-1],prob)
head(f_data)
  longitude latitude       prob
1  108.8068 28.90528 0.61224490
2  109.3557 30.95855 0.27551020
3  109.3605 31.50916 0.46938776
4  108.3893 31.27710 0.04081633
5  108.2729 29.35963 0.52040816
6  108.8632 31.04241 0.09183673
#生成最终热力图
remapH(data = f_data,  
               maptype = ‘重庆’,
               theme = get_theme(theme = ‘none’,
                                                 backgroundColor = ‘gray’,   #整体背景颜色
                                                 borderColor = ‘black’,   #区域边缘颜色
                                                 labelShow = F,   #区域名称是否显示
                                                 regionColor = ‘gray’,   #区域颜色
                                                 pointShow = F),
               blurSize = 40,  #越大范围越大,越虚化
               minAlpha = 0.5,
               opacity = 3  #不透明度越大越明显
               )

结果展示如下:
remaph
解读: 有几点发现,一是点多才能有热力效果,记录条数太少显示效果较差。二是初始输入数据的第三列密度值大小对结果展现无影响(使用此函数的初始目的是根据不同点的密度不一样,反映不同的热力密度,但是实际变化数值后展示的结果图没有变化)。三是除了密度数据大小变化无影响外,get_theme( )函数里的参数regionColor设置也失效。此函数的热力图的展示与参数设置关系紧密,blurSize和opacity改变对结果展示影响特别大,需自行调整适应。

至此郎大为Chiffon老师开发的REmap包主要内容都实践完毕,再次向大神致敬以及致谢。

原创文章,作者:金小贝,如若转载,请注明出处:http://www.17bigdata.com/%e6%95%b0%e6%8d%ae%e5%b8%ae%ef%bc%9a%e5%9c%b0%e5%9b%be%e5%8f%af%e8%a7%86%e5%8c%96remap%e5%8c%85-remaph%e5%87%bd%e6%95%b0%e5%8f%8a%e5%ae%9e%e4%be%8b/

联系我们

在线咨询:点击这里给我发消息

邮件:23683716@qq.com

跳至工具栏