上期用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在地图上打点相关推荐

  1. Python根据经纬度在地图上显示(folium)

    Python根据经纬度在地图上显示(folium) 一.folium介绍 1.folium.Map参数简要介绍 2.folium.Marker参数介绍 二.Python根据经纬度在地图上显示(示例) ...

  2. 麋鹿分布图制作(一)——调用百度API查询地名的坐标

    最近在做保护生物学的论文,查论文的过程中发现之前的麋鹿分布图是手绘的,看起来真的是...,因此我决定重新画一下这个图. 这个地图的绘制我分为两个部分:(一)调用百度API查找地点的经纬度,(二)用py ...

  3. (数据科学学习手札03)Python与R在随机数生成上的异同

    随机数的使用是很多算法的关键步骤,例如蒙特卡洛法.遗传算法中的轮盘赌法的过程,因此对于任意一种语言,掌握其各类型随机数生成的方法至关重要,Python与R在随机数底层生成上都依靠梅森旋转(twiste ...

  4. 用R在地图上绘制网络图的三种方法

    作者:严涛浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源 又到了亲爱的严涛老师时间: 诺奖文章里面的动图布局教程来了!! R包ggseqlogo |置换序列分析图 ggp ...

  5. QGIS二次开发:鼠标在地图上移动时,状态栏显示鼠标所在位置经纬度

    主要思路: 当鼠标在地图画布控件上移动时,会发送xyCoordinates信号,该信号参数是墨卡托坐标系表示的地图上的点坐标,然后将墨卡托坐标转为经纬度表示的WSG84坐标,绑定该信号到槽函数,然后发 ...

  6. Python爬取Google地图上指定城市经纬度

    欢迎关注博主的微信公众号:"智能遥感". 该公众号将为您奉上Python地学分析.爬虫.数据分析.Web开发.机器学习.深度学习等热门源代码. 该代码是对Google地图的爬取,首 ...

  7. python按经纬度在地图上标识_Python 给定的经纬度标注在地图上的实现方法

    博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图.值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包. ...

  8. GIS(二)——在js版搜狗地图上添加brand标牌

    在上一篇博文中,我在搜狗地图上添加了Marker标记,但是在用户体验度上还是不够的,如果想了解某些信息,你得把鼠标指向marker,才能看到title里的值.有没有一种可以直接显示在marker上的东 ...

  9. LeetCode高频题:《逆水寒》在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域

    LeetCode高频题:<逆水寒>在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域? 提示:本题是系列LeetCode的150道高 ...

最新文章

  1. 武汉理工大学计算机复试笔试重要吗,2017武汉理工计算机复试
  2. jQuery CSS 样式属性
  3. python3.4 使用pymysql 连接mysql数据库
  4. [html] Standards模式和Quirks模式有什么区别?
  5. python模块的定义_Python基础编程 模块的引入与定义
  6. 文字不间断滚动(转)
  7. Debug Android with Android phone.
  8. U8普及版在win7系统中,UFO报表一点打印或预览就报错
  9. Scrapy框架爬取豆瓣电影top250信息
  10. 精通使用K米短信教程
  11. 流媒体直播点播系统方案设计
  12. java 支付宝转账_Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)...
  13. 《 Python程序设计项目案例》—学生成绩(信息)管理系统普通版设计要求及部分参考代码(期末大作业、结课项目)
  14. centos 中redis的使用
  15. 马氏距离 (马哈拉诺比斯距离) (Mahalanobis distance)
  16. U²-Net:使用显著性物体检测来生成真实的铅笔肖像画
  17. (四)eos开发实战dapp+游戏--发币(TKB币)
  18. ERP 系统的核心是什么?有什么作用?
  19. python爬虫——世界排名前1000大学
  20. 山狮系统_苹果操作系统OSX10.8山狮/美洲狮Mountain Lion怎么安装

热门文章

  1. 年终固定资产大盘点的具体步骤
  2. LSL-- Flow Control
  3. ARM64体系结构编程与实践:算术与移位指令
  4. MATLAB统计分析—描述性统计
  5. bucket name does not follow Amazon S3 standards
  6. RADAR毫米波雷达传感器
  7. 红孩儿编辑器的详细设计
  8. shipyard安装不迷茫
  9. 网络诊断显示服务器有问题,Win7系统网络诊断提示DNS服务器未响应怎么解决
  10. Java实现细菌觅食算法_细菌觅食算法的matlab代码