2022.06.02更新
CHN_adm_shp.zip 网盘下载链接:
链接:https://pan.baidu.com/s/11igf-bfDLuolI5HzEykzMw
提取码:oas6


2017年12月23日更新
使用folium实现中国地图绘制,文章链接:

python/folium绘制中国人口数量热力图(HeatMap)


这篇博文主要实现用Pyhon,Matplotlib/Basemap绘制中国地图,主要是各省份行政图(轮廓图),地形图和人口分布图,其中人口分布可以嵌入到上述图形中。

参考链接:
(1)https://www.zhihu.com/question/49669755
(2)http://basemaptutorial.readthedocs.io/en/latest/backgrounds.html#fillcontinents

1、数据准备:
(1)到http://www.gadm.org/download 下载中国shapefile格式的资料,有读者反应进去不了该网站,可以在我的github下下载https://github.com/ouening/python-code/tree/master/resources下载后的文件名为CHN_adm_shp.zip ,解压后如图:

主要用到的文件是CHN_adm1.shp,另外CHM_adm1.csv 可以用notepad打开查看一下文件内容

(2)2015Cities-CHINA.xlsx ,包含中国各城市的经纬度,自己网上搜索整理,数据可能过时了,和维基百科查到的数据不太对,但是拿来写个小程序还是足够的)
xlsx可以用excel打开查看一下:

在python中可以导入pandas模块,使用read_excel() 函数方便读取文件

basemap绘图常用函数:

basemap地图背景设置函数:

更多详细的函数介绍请参考

http://matplotlib.org/basemap/users/geography.html

###程序1,各省份轮廓图

import timestart = time.clock()from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
fig = plt.figure()
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])map = Basemap(llcrnrlon=80.33, llcrnrlat=3.01, urcrnrlon=138.16, urcrnrlat=56.123,resolution='h', projection='cass', lat_0 = 42.5,lon_0=120,ax=ax1)shp_info = map.readshapefile("D:\\GoogleDownload\\CHN_adm_shp\\CHN_adm1",'states',drawbounds=True) # CHN_adm1的数据是中国各省区域for info, shp in zip(map.states_info, map.states):proid = info['NAME_1']  # 可以用notepad打开CHN_adm1.csv文件,可以知道'NAME_1'代表各省的名称if proid == 'Guangdong':poly = Polygon(shp,facecolor='g',edgecolor='c', lw=3) # 绘制广东省区域ax1.add_patch(poly)map.shadedrelief() # 绘制阴暗的浮雕图map.drawcoastlines()
end=time.clock()
print(end-start)
plt.show()

###程序2,地形图

import timestart = time.clock()
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import pandas as pd
import numpy as np
posi=pd.read_excel("D:\\Files\\datasets\\2015Cities-CHINA.xlsx") #读取中国城市数据
lat = np.array(posi["lat"][0:120])                        # 获取维度之维度值
lon = np.array(posi["lon"][0:120])                        # 获取经度值
pop = np.array(posi["pop"][0:120],dtype=float)
size=(pop/np.max(pop))*100  map = Basemap(llcrnrlon=80.33, llcrnrlat=3.01, urcrnrlon=138.16, urcrnrlat=56.123,resolution='h', projection='cass', lat_0 = 42.5,lon_0=120)map.readshapefile("D:\\GoogleDownload\\CHN_adm_shp\\CHN_adm1",'states',drawbounds=True)map.etopo() # 绘制地形图,浮雕样式map.drawcoastlines()x,y = map(lon[2],lat[2]) # 北京市坐标,经纬度坐标转换为该map的坐标a,b = map(lon,lat)# map.scatter(a,b,s=size) # 取消注释此行即可获得中国各地区人口分布示意图map.scatter(x,y,s=200,marker='*',facecolors='r',edgecolors='r') # 绘制首都end=time.clock()print(end-start)plt.show()

###程序3,人口分布图


import urllib
import numpy as np
import matplotlib
matplotlib.rcParams['toolbar'] = 'None'
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from  matplotlib.animation import FuncAnimation
import pandas as pd
import seaborn as sns# posi=pd.read_csv("D:\\Files\\datasets\\CitiesLatLon_China.csv")posi=pd.read_excel("D:\\Files\\datasets\\2015Cities-CHINA.xlsx")lat = np.array(posi["lat"][0:120])                        # 获取维度之维度值
lon = np.array(posi["lon"][0:120])                        # 获取经度值
pop = np.array(posi["pop"][0:120],dtype=float)    # 获取人口数,转化为numpy浮点型
gdp = np.array(posi["GDP"][0:120],dtype=float)    # 获取人口数,转化为numpy浮点型size=(pop/np.max(pop))*100    # 绘制散点图时图形的大小,如果之前pop不转换为浮点型会没有大小不一的效果# size=(gdp/np.max(gdp))*100    # 绘制散点图时图形的大小,如果之前pop不转换为浮点型会没有大小不一的效果map = Basemap(projection='stere', lat_0=35, lon_0=110,llcrnrlon=82.33, llcrnrlat=3.01, urcrnrlon=138.16, urcrnrlat=53.123,resolution='l',area_thresh=10000,rsphere=6371200.)map.drawcoastlines()
map.drawcountries()
map.drawcounties()
map.readshapefile("D:\\GoogleDownload\\CHN_adm_shp\\CHN_adm1",'states',drawbounds=True)
map.drawmapboundary()parallels = np.arange(0.,90,10.)
map.drawparallels(parallels,labels=[1,0,0,0],fontsize=10) # 绘制纬线meridians = np.arange(80.,140.,10.)
map.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10) # 绘制经线x,y = map(lon,lat)# map.scatter(x,y,edgecolors='r',facecolors='r',marker='*',s=320)map.scatter(x,y,s=size)plt.title("Population Distribution in China")
plt.show()

Basemap绘制中国地图相关推荐

  1. Python之使用Basemap绘制中国地图

    目录 1.下载Basemap 2.安装Basemap 3.参数说明 4.地图包下载及导入 5.颜色填充 1.下载Basemap 本人电脑win7,64位操作系统,使用Jupyter 和 Python3 ...

  2. 使用raphael.js绘制中国地图

    最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作.在本文中,我给大 ...

  3. qcustomplot绘制热力图瀑布图_使用REmap绘制中国地图

    上次我们介绍了使用ggplot2绘制中国热力地图,需要温习的同学可以点击以下链接 使用ggplot2绘制中国地图  .在使用ggplot2绘制的时候,需要进行数据处理的步骤比较多,今天我们介绍一个新的 ...

  4. Ant Design Charts绘制中国地图并动态添加标记点

    绘制中国地图并动态添加标记点,在这里使用的是antd charts绘制,需要求只显示中国地图,并且跟踪物流信息 使用组件地址: 图表 - Plot | Ant Design Charts 这里的引入方 ...

  5. [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区

    最近发生了很多事情,去到了一个新环境学习.但是不论在哪里,我都需要不忘初心,坚持做自己喜欢的事情,在CSDN写博客.教学.爱娜.生活等等.         这篇文章主要是通过Echarts可视化介绍入 ...

  6. 【Python 实战基础】 如何绘制中国地图展示省份GDP数据

    目录 一.实战场景 二.主要知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 循环遍历 三.菜鸟实战 1.创建 python 文件 2.运行结果 一.实战场景 实战场景: 如何绘制中国地图展 ...

  7. echarts 绘制中国地图(中英文转换)

    echarts 绘制中国地图 1.引入echarts npm install echarts import echarts from 'echarts' 2.引入地图china.js(网上自行搜索下载 ...

  8. vue中使用echarts绘制中国地图

    首先需要一个绘制中国地图的json文件(资源还在审核,审核过后会重新贴上来) 1.首先引入echarts和json文件,在需要的地方引即可 import echarts from 'echarts'; ...

  9. vue使用echarts绘制中国地图

    vue使用echarts绘制中国地图 //myMap.vue <div id="geo"></div>//china.js下载地址 https://down ...

最新文章

  1. 学习如何用平板电脑设计和绘制自己的动漫角色
  2. libevent -简单的异步IO介绍
  3. 做一个幸福的“生活家”:谈《心欢喜,灵快乐》
  4. java 根据类名示例化类_Java即时类| EpochSecond()方法的示例
  5. PyCharm2019.1.1安装(Ubuntu16.04)
  6. SQL之COLLATE 子句 排序规则
  7. Python学习笔记之类(四)
  8. struts框架搭建及validator示例
  9. Smart Client Software Factory 初试
  10. 【软件测试】白盒测试的条件覆盖标准强于判定覆盖(错)
  11. 大数据有哪些基本特征
  12. 指标公式c语言源码下载,通达信超级全系列指标公式
  13. pycharm汉化包下载
  14. 如何破解域管理员密码
  15. 华为mate20 pro 专业模式拍照
  16. 【语义分割】2022-HRViT CVPR
  17. 【目录】全志F1C100S/F1C200S学习笔记
  18. php json 原理,基于JSONP原理详解
  19. AI全栈设计师的能力公式,及如何用AI来增强设计能力
  20. 普歌—云言团队——最新Git的相关配置,集成IDEA使用

热门文章

  1. net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting head
  2. 封神演义人物实力分级点评
  3. 按键android手机排行榜,【直板全键盘手机推荐】直板键盘手机排行榜
  4. Es6类数组length属性和扩展方法,find(),findIndex(),fill(),copyWithin(),entries()...用法
  5. 曝大S汪小菲婚宴初定汪小菲三亚顶级酒店
  6. 小猿圈python视频_小猿圈分享学习Python的最佳方式
  7. 梦幻西游 WSG 文件格式分析
  8. linux ps命令 详细介绍
  9. Kinect安装与使用(一)
  10. Hotkeycontrol录制宏