看到各种各样漂亮的地图有没有很羡慕,那么这些地图究竟是怎么画出来的呢,这里主要介绍两个画地图的R包。

一、leafletCN

1、包的下载与安装

下载:

install.packages('leafletCn')

安装:

library(leafletCN)

2、主函数介绍

(1)、regionNames函数

该函数为找地名函数,比如:

> regionNames('十堰市')

[1] "丹江口市" "房县"

[3] "茅箭区"   "郧西县"

[5] "郧县"     "张湾区"

[7] "竹山县"   "竹溪县"

#可以查看到我们十堰市的所有县

>regionNames('湖北')

#会列出湖北所有市

regionNames的粒度是省级、县级,在细分就没有了。执行regionNames()之后,可以知道包里面存着哪些地方,是否有你要的内容。

(2)、主函数——demomap:区域式地图

install.packages("rgeos")

demomap("杭州")

就会画出杭州的交互式地图,可以拖拽,实在闲的蛋疼的话,你可以把整个世界地图拖完,相信自己。

(3)、主函数一一geojsonmap:地图标色函数

#主函数--geojsonmap:地图标色函数

下面画出中国地图

>dat<-data.frame(name = regionNames("china"),value = runif(34))

geojsonMap(dat,"china")

可以看出用了蓝色的渐变色交错表示出了全国的34个省市自治区,当然根据“四色定理”只需要4种颜色即可标记一张地图。

输入的数据长这样(查看前几行)

> head(dat)

name     value

1 新疆维吾尔自治区 0.9109566

2       西藏自治区 0.9469343

3     内蒙古自治区 0.3989314

4           青海省 0.3264521

5           四川省 0.3350581

6         黑龙江省 0.5405709

3、辅助函数

(1)、辅助函数一一amap:高德地图底图

1leaflet() %>%   amap()

当然了,这么执行只有一个白板地图,并不是实体的。

(2)、辅助函数——read.geoShape:genjson格式转化

1if(require(sp)){
2
3 filePath = system.file("geojson/china.json",package = "leafletCN")
4
5 map = read.geoShape(filePath)
6
7 plot(map)
8
9}#如图

读入了china.json格式的内容。

(3)、辅助函数一一leafletGeo:地图+小显示框

把一个数据框和一个地图组合在一起, 方便用leaflet调用, 其中名字的 变量为name, 数值的变量为value

4、leafletCN案例

(1)、多点标注:地图+标点+带icoon

 1#iconList 生成小框框2iconList = awesomeIconList(3  "home" = makeAwesomeIcon(icon = "home",markerColor = "skyblue"),4  "weixin" = makeAwesomeIcon(icon = "cutlery",markerColor = "red"),5  "bank" = makeAwesomeIcon(icon = "plus-sign",markerColor = "orange"),6  "automobile" = makeAwesomeIcon(icon = "trash",markerColor = "purple"),7  "coffee" = makeAwesomeIcon(icon = "book")8)9
10#每个小框框的坐标,经纬度
11geo = data.frame(lon = rep(121.44, 5),
12                 lat = rep(31.22, 5),
13                 city = rep("Shanghai", 5))
14
15#坐标进行微调,使得有差异
16geo$lon = geo$lon+rnorm(5,0,0.003)
17geo$lat = geo$lat+rnorm(5,0,0.003)
18
19#小框框的属性
20geo$type = c("home",
21             "weixin",
22             "bank" ,
23             "automobile",
24             "coffee" )
25
26#在高德地图上进行绘制
27
28leaflet(geo) %>% amap() %>%
29  addMiniMap() %>%
30  addAwesomeMarkers(icon = ~iconList[type])

这里awesomeIconList是小框框定义的一个函数;

geo 是坐标点的经纬度,geo$type是坐标点的属性;

leaflet(geo) ,放入数据; amap(),调出高德地图;  addMiniMap() ,看到右下角的小显示框了没?;  addAwesomeMarkers(icon = ~iconList[type])加入坐标点+坐标的icon

(2)、地图+分区域显示+色彩

我把它做成了一个函数,只需要输入你所在的市名就可以画出市县情况图了

 1print_map<-function(s){23  if(require(leaflet)){45    region=regionNames(s)67    dat = data.frame(region,runif(length(region)))89    map = leafletGeo(s, dat)
10
11    #涂色环节
12
13    pal <- colorNumeric(
14
15    palette = "Blues",
16
17    domain = map$value)
18
19    #载入高德地图amap
20
21    leaflet(map) %>% amap() %>%
22
23    #加入框边界及颜色
24
25      addPolygons(stroke = TRUE,
26
27                smoothFactor = 1,
28
29                fillOpacity = 0.7,
30
31                weight = 1,
32
33                color = ~pal(value),
34
35                popup = ~htmltools::htmlEscape(popup)
36
37    ) %>%
38
39    #加入右下角边框
40
41    addLegend("bottomright", pal = pal, values = ~value,
42
43              title = "legendTitle",
44
45              labFormat = leaflet::labelFormat(prefix = ""),
46
47              opacity = 1)
48
49  }
50
51}

首先把这个函数运行一下,告诉计算机这个函数的存在,然后只需输入两行代码:

>s<-'十堰'    #家乡所在市

>print_map(s)

二、leaflet

1、说说底图

leaflet 的底图太多了,不过大多以全世界、美国的视角,简单列举几个:

 1leaflet() %>% addTiles() #openStreetMap 正常的世界地图23leaflet() %>% amap()  # 高德(leafletCN)45leaflet() %>% addProviderTiles("Thunderforest.SpinalMap")# 暗黑火焰风格67leaflet() %>% addProviderTiles("Esri.WorldImagery")# 卫星地图89leaflet() %>% addProviderTiles("OpenTopoMap")  #带海拔的地图
10
11leaflet() %>% addProviderTiles("NASAGIBS.ViirsEarthAtNight2012")  #NASA夜景
12
13leaflet() %>% addProviderTiles("Stamen.Toner")   #黑白底图

2、世界地图+多标记+标记显示数字

1data(quakes)
2
3# Show first 20 rows from the `quakes` dataset
4
5leaflet(data = quakes[1:20,]) %>% addTiles() %>%
6
7  addMarkers(~long, ~lat, popup = ~as.character(mag), label = ~as.character(mag))

quakes是packages自带的数据,数据长这样:

lat   long depth mag stations

1    -20.42 181.62   562 4.8       41

2    -20.62 181.03   650 4.2       15

3    -26.00 184.10    42 5.4       43

4    -17.97 181.66   626 4.1       19

leaflet(data = quakes[1:20,]) ,显示quakes数据集的前20个;

addTiles() ,世界地图底纹;

addMarkers(~long, ~lat, popup = ~as.character(mag), label = ~as.character(mag))中,

~long, ~lat分别代表经度、维度;popup、label 从图中可以看到,那个数字6.1有两种显示方式,一个是标签式、一个是弹窗。

3、地图+点集区域+复选框+NASA星空图

 1geo = data.frame(long = rep(121.44, 1000),23                 lat = rep(31.22, 1000),45                 mag=rep(5,1000))67#mag函数是用来衡量后面,点集范围大小89geo$long = geo$long+rnorm(1000,0,1)
10
11geo$lat = geo$lat+rnorm(1000,0,1)
12
13geo$mag = geo$mag+rnorm(1000,0,1)
14
15outline <- geo[chull(geo$long, geo$lat),]
16
17map <- leaflet(geo) %>%
18
19  # 底层阶段
20
21  # 第一层底图,高德
22
23  amap(group = "高德") %>%
24
25  # 第二层底图,黑底图NASA
26
27  addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012, group = "黑底") %>%
28
29  # 第三层底图,白底层
30
31  addProviderTiles(providers$Stamen.TonerLite, group = "白底") %>%
32
33  # 点集+区域轮廓阶段
34
35  addCircles(~long, ~lat, ~7^mag/50, stroke = F, group = "圈点",color="#97FFFF") %>%
36
37  # 描点画圈,stroke=T的话,边界包边,丑
38
39  # 绘制轮廓,利用前面的凸集点
40
41  addPolygons(data = outline, lng = ~long, lat = ~lat,
42
43              fill = F, weight = 2, color = "#FFFFCC", group = "轮廓") %>%
44
45  # 复选框
46
47  addLayersControl(
48
49    baseGroups = c("高德", "黑底", "白底"),
50
51    #显示层
52
53    overlayGroups = c("圈点", "轮廓"),
54
55    options = layersControlOptions(collapsed = FALSE)
56
57  )
58
59map

(1)、底层阶段

amap和addProviderTiles的两个,都是底图样式(其他底图可见:leaflet-extras网站),其中的group是自定义的名称,可以自己命名;

(2)、点集+区域轮廓阶段

addCircles是描绘点的,long,lat是经度、维度,stroke是点是否包边,为true很丑;group是自定义的名称,color是圈圈的颜色,颜色RGB列表;addPolygons是描绘外围的轮廓的,数据outline是通过求凸集函数chunk求得,lng和lat分别是经度维度;

(3)、复选框阶段

addLayersControl加入控件组,baseGroups 是右上角的一个框,overlayGroups 是下面的数字框。

猜你可能喜欢

想画出你家乡地图吗,来来来!相关推荐

  1. python画指北针_python如何画出漂亮的地图?

    python如何画出漂亮的地图? 要画一张好看的地图,数据量的多少.底图的支持程度与选择乃至个人的美学素养是一张好看的地图重要的因素.目前python也有很多能够实现地图可视化的包,这里给大家推荐最基 ...

  2. 用python绘制漂亮的图形-python如何画出漂亮的地图?

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,其他回答都有介绍,还有稍低调的bokeh.basemap.geopandas,也是地图可视化的利器. 首先介绍下bo ...

  3. python画简便的图-python如何画出漂亮的地图?网友:教教我呗

    导入包,创建一副世界地图 不要错过 免费学习Python的机会,快来+688244617 import folium import pandas as pd # define the world ma ...

  4. python画地图柱状图_Python 如何画出漂亮的地图?

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,其他回答都有介绍,还有稍低调的bokeh.basemap.geopandas,也是地图可视化的利器. 首先介绍下bo ...

  5. 用python如何画出好看的地图

    最近正好在学空间数据处理,这次更一下用python如何画出好看的地图 下面主要是用 folium poltly geopandas+matplotlib 三种方式绘制地图 1.folium impor ...

  6. Python 如何画出漂亮的地图?

    一.关于多样化地图 早期使用Python绘制地图主要是绘制静态地图,现在随着研究深入也会去探索一些新的方法因为Python不仅仅只支持一些静态地图的绘制,动态地图和网络分析图Python其实也不在话下 ...

  7. python画建筑分析图_python如何画出漂亮的地图?

    要画一张好看的地图,数据量的多少.底图的支持程度与选择乃至个人的美学素养是一张好看的地图重要的因素.目前python也有很多能够实现地图可视化的包,这里给大家推荐最基础也是个人最常使用的两个包geop ...

  8. 如何利用python画半导体版图_python如何画出漂亮的地图?

    目录 一.关于多样化地图 这几张也被matplotlib官方进行了转发! 二.关于传统静态地图 1 geopandas数据的导入 2 利用geopandas和contextily绘图 2.1 最简单的 ...

  9. Python下basemap画出的各种地图

    刚接触Python的basemap库时,被它所能产生的效果震撼了. 但是在深入的学习时发现网上很难找到系统的中文教程,仅能搜到一些博客文章里讲到的某些知识点,不成体系,就难以运用自如. 在网上看了看官 ...

最新文章

  1. php函数介绍,PHP函数介绍_PHP教程
  2. 每日一皮:叫你们别上泰坦尼克,嗓子都喊哑了!没一个听我的,最后还把我......
  3. python怎么读文件里的指定几行-Python从文件中读取指定的行以及在文件指定位置写入...
  4. 关于排版中经常见的问题的解决方法
  5. Git 索引文件(index file)
  6. SAP Analytics Cloud嵌入到SAP Cloud for Customer的效果图
  7. scala java maven项目_IntelliJ IDEA下Maven创建Scala项目的方法步骤
  8. Linux - iptables
  9. 海康 Isecure VMS 客户端二次开发简单记录
  10. iOS 百度地图与高德地图经纬度转换(坐标转换)
  11. REVIT插件 | 建模助手这次的版本更新,BIMer都笑了
  12. 进化树相关概念和类型介绍
  13. 用PS怎么画虚线圆?
  14. C语言实现简单电子通讯录
  15. 关于RecyclerView 设置条目间距
  16. numpy.linalg 中的逆矩阵 inv
  17. opencv实现两张图片叠加
  18. excel单元格下拉选项怎么设置_单元格下拉效果怎么实现?
  19. 平台级解决方案,平安给深圳的智慧工具箱
  20. 将js对象转为json对象属性加上引号

热门文章

  1. 全国及分省家庭承包经营耕地面积与流转面积数据(2005-2020年)
  2. 比尔最“浪漫”的事 和IT一起慢慢变老
  3. CSS 穿墙术,太强了
  4. HTML/CSS 学习记录#1
  5. js关于setTimeout实现延时执行函数并进行传参
  6. eCalc 一个非常棒的计算器
  7. 常见加密方式DES、AES
  8. Mat未初始化引起拼接算法结果,release版本和debug版本不一致
  9. Python 程序结构及代码规范
  10. mysql 修改 表名 列名 为小写