Basemap绘制中国地图

Basemap绘制中国地图2017 年 12 月 23 日更新使用 folium 实现中国地图绘制 文章链接 python folium 绘制中国人口数量热力图 HeatMap 这篇博文主要实现用 Pyhon Matplotlib Basemap 绘制中国地图 主要是各省份行政图 轮廓图 地形图和人口分布图 其中人口分布可以嵌入到上述图形中 参考链接 1 https www zhihu com que


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


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

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

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

程序1,各省份轮廓图

import time start = 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 time start = 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=.) 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() 

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205820.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:06
下一篇 2026年3月19日 下午5:07


相关推荐

  • DS1302详解

    DS1302详解DS1302 是由美国 DALLAS 公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 并且具有闰年补偿等多种功能

    2026年3月18日
    2
  • sorl学习

    sorl学习solr nbsp 企业站内搜索配置分词器配置自定义域

    2026年3月10日
    3
  • 网络传输的两种方式——同步传输和异步传输的区别[通俗易懂]

    网络传输的两种方式——同步传输和异步传输的区别[通俗易懂]在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。1.异步传输(AsynchronousTransmission):异步传输…

    2022年4月19日
    277
  • docker离线安装部署_docker官方中文文档

    docker离线安装部署_docker官方中文文档离线安装docker

    2026年4月13日
    6
  • Qt/C++ 音乐播放器源码[通俗易懂]

    Qt/C++ 音乐播放器源码[通俗易懂]Qt5音乐播放器这是本人的第一条博客,排版什么的就将就看吧~一,我还在学生,学Qt来收获很大,至少是明白了Qt这些大大小小的问题1.播放器做的很累人,网上虽有源码,但都过分的简单且不美观。2.基于上述原因我才打算重新写个玩玩,以后在写程序的时候听着自己做的播放器放的歌,那是相当的苦中带乐啊!!二,好了下面讲如何实现吧1.先上几张最终效果图:换肤:…

    2022年5月22日
    60
  • Ubuntu安装pycharm及快速创建pycharm的快捷方式,便于使用

    Ubuntu安装pycharm及快速创建pycharm的快捷方式,便于使用Ubuntu 快速创建 pycharm 的快捷方式 便于使用先参考链接 link 安装 Ubuntu20 04 中的 Pycharm 我这里安装是最新版 2020 3 3Pycharm 官网那个链接也放上 https www jetbrains com pycharm download section linux 首先 解压安装包 pycharm professional 2020 3 3 tar gz 终端输入 对应安装包名称需改动 admin admin1 tar zxvf

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号