麋鹿分布图制作(二)—— 用Python和R在地图上打点
上期用Python调用百度API得到地点的经纬度, 今天就将这些点标注在地图上。
首先我们用R语言来标注。
文中用到的文件已上传到Github。
library(rgdal)
library(ggplot2)
library(mapproj)
library(xlsx)# 设置一下工作路径
setwd('D:/class/zonglv')
# 读取文件
milu = read.xlsx('milu.xlsx', 1, encoding = 'UTF-8')
# 读取中国地图
china_map <- readOGR('./mapdata/bou2_4p.shp')
# 转化为数据框
china_map <- fortify(china_map)p = ggplot() +geom_polygon(data=china_map, aes(x=long, y=lat, group = group), colour="grey60", size = 0.25) +geom_point(data = milu, aes(x = lon,y = lat, color = time, shape = species), size = 1.5) + coord_map("polyconic")
p
画出的地图如下:
接下来用python的basemap画一次。
import time
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import pandas as pd
import numpy as np
在这些调用的模块中,basemap的安装可能会难一点,这里请参考Basemap手册,另外,Basemap tutorial也不错,参考这两个链接应该就可以画很多图了,但是我在跑Basemap的时候很多关键的代码都会出现Can’t set attribute的报错,目前还没有找到原因,勉强跑了一个图出来,如果有大神看到这个帖,麻烦告知一下解决方法。
ml = pd.read_excel('milu.xlsx')
# 我们还是先把数据读入进来
plt.figure(figsize = (16,8))
m = Basemap(llcrnrlon=77,llcrnrlat=14,urcrnrlon=140,urcrnrlat=51,projection='lcc',lat_1=33,lat_2=45,lon_0=100)
m.drawcoastlines()
m.drawcountries(linewidth=1.5)
m.readshapefile('shapefile/gadm36_CHN_1', 'states', drawbounds=True)
lats = list(ml['lat'])
lons = list(ml['lon'])
x, y = m(lons, lats)
m.scattter(x,y,3,marker = 'o', color = 'red')
plt.show()
在这里需要注意的是,这个代码无论是在Jupyter notebook还是在sublime text 3中运行都是会报错的,但是在jupyter notebook中是可以跑出地图来的,如上图。
在两个程序之中跑的代码,我们可以看到,有些点的位置是不准确的,我不知道这是由于百度地图API给的经纬度不够准确还是我下载的shp文件和百度地图不太兼容,如果我以后找到原因会更新本文。
版权声明:作者保留权利。文章为作者独立观点,不代表数据人网立场。严禁修改,转载请注明原文链接:http://shujuren.org/article/775.html
数据人网:数据人学习,交流和分享的平台,诚邀您创造和分享数据知识,共建和共享数据智库。
麋鹿分布图制作(二)—— 用Python和R在地图上打点相关推荐
- Python根据经纬度在地图上显示(folium)
Python根据经纬度在地图上显示(folium) 一.folium介绍 1.folium.Map参数简要介绍 2.folium.Marker参数介绍 二.Python根据经纬度在地图上显示(示例) ...
- 麋鹿分布图制作(一)——调用百度API查询地名的坐标
最近在做保护生物学的论文,查论文的过程中发现之前的麋鹿分布图是手绘的,看起来真的是...,因此我决定重新画一下这个图. 这个地图的绘制我分为两个部分:(一)调用百度API查找地点的经纬度,(二)用py ...
- (数据科学学习手札03)Python与R在随机数生成上的异同
随机数的使用是很多算法的关键步骤,例如蒙特卡洛法.遗传算法中的轮盘赌法的过程,因此对于任意一种语言,掌握其各类型随机数生成的方法至关重要,Python与R在随机数底层生成上都依靠梅森旋转(twiste ...
- 用R在地图上绘制网络图的三种方法
作者:严涛浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源 又到了亲爱的严涛老师时间: 诺奖文章里面的动图布局教程来了!! R包ggseqlogo |置换序列分析图 ggp ...
- QGIS二次开发:鼠标在地图上移动时,状态栏显示鼠标所在位置经纬度
主要思路: 当鼠标在地图画布控件上移动时,会发送xyCoordinates信号,该信号参数是墨卡托坐标系表示的地图上的点坐标,然后将墨卡托坐标转为经纬度表示的WSG84坐标,绑定该信号到槽函数,然后发 ...
- Python爬取Google地图上指定城市经纬度
欢迎关注博主的微信公众号:"智能遥感". 该公众号将为您奉上Python地学分析.爬虫.数据分析.Web开发.机器学习.深度学习等热门源代码. 该代码是对Google地图的爬取,首 ...
- python按经纬度在地图上标识_Python 给定的经纬度标注在地图上的实现方法
博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图.值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包. ...
- GIS(二)——在js版搜狗地图上添加brand标牌
在上一篇博文中,我在搜狗地图上添加了Marker标记,但是在用户体验度上还是不够的,如果想了解某些信息,你得把鼠标指向marker,才能看到title里的值.有没有一种可以直接显示在marker上的东 ...
- LeetCode高频题:《逆水寒》在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域
LeetCode高频题:<逆水寒>在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域? 提示:本题是系列LeetCode的150道高 ...
最新文章
- 武汉理工大学计算机复试笔试重要吗,2017武汉理工计算机复试
- jQuery CSS 样式属性
- python3.4 使用pymysql 连接mysql数据库
- [html] Standards模式和Quirks模式有什么区别?
- python模块的定义_Python基础编程 模块的引入与定义
- 文字不间断滚动(转)
- Debug Android with Android phone.
- U8普及版在win7系统中,UFO报表一点打印或预览就报错
- Scrapy框架爬取豆瓣电影top250信息
- 精通使用K米短信教程
- 流媒体直播点播系统方案设计
- java 支付宝转账_Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)...
- 《 Python程序设计项目案例》—学生成绩(信息)管理系统普通版设计要求及部分参考代码(期末大作业、结课项目)
- centos 中redis的使用
- 马氏距离 (马哈拉诺比斯距离) (Mahalanobis distance)
- U²-Net:使用显著性物体检测来生成真实的铅笔肖像画
- (四)eos开发实战dapp+游戏--发币(TKB币)
- ERP 系统的核心是什么?有什么作用?
- python爬虫——世界排名前1000大学
- 山狮系统_苹果操作系统OSX10.8山狮/美洲狮Mountain Lion怎么安装