python绘制中国地图,现实各个地区销量与销售额

1.pyproj
2.geos
3.matplotlib
4.basemap (base on geos)
https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap
pip install basemap-1.2.0-cp37-cp37m-win64.whl
5.下载 shapefile of china
https://gadm.org/download_country_v3.html
中国需下载 gadm36_CHN_shp、gadm36_HKG_shp、gadm36_TWN_shp

原始数据如下
在这里插入图片描述

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
import pandas as pd

plt.figure(figsize=(16,8))

m = Basemap(llcrnrlon=80, llcrnrlat=14, urcrnrlon=138, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100
            ,resolution='c'
            ,area_thresh=10000000
            ) # 兰勃特投影

# The resolution options are c (crude, the default), l (low), i (intermediate), h (high), f (full) or None

#Fill the globe with a blue color1
m.drawmapboundary(fill_color= 'aqua')
#Fill the continents with the land color
#m.fillcontinents(color='coral',lake_color='aqua')
m.fillcontinents(color='gray',lake_color="#7777ff")

m.drawcountries(linewidth=1,color='gray')  # 隐藏国境线
#m.drawcoastlines()

m.readshapefile('gadm36_CHN_1', 'states', drawbounds=True)
m.readshapefile('gadm36_TWN_0', 'taiwan', drawbounds=True)
m.readshapefile('gadm36_HKG_0', 'hongkong', drawbounds=True)

df = pd.read_excel('各地销售数据.xlsx' , encoding='gbk')
#print(df)
df['地区'] = df.地区.str[:2]
df.set_index('地区', inplace=True)

statenames=[]
colors={}   
cmap = plt.cm.YlOrRd
vmax = 10
vmin = 4

for shapedict in m.states_info:
    statename = shapedict['NL_NAME_1']
    p = statename.split('|')
    if len(p) > 1:
         s = p[1]
    else:
         s = p[0]
    s = s[:2]
    if s == '黑龍':
         s = '黑龙'
    statenames.append(s)
    pop = df['rate'][s]
    lons = df['lon'][s]
    lats = df['lat'][s]

    x, y = m(lons, lats)
    #plt.text(x, y, pop, fontsize=12, fontweight='bold',
    #         ha='left', va='bottom', color='k')
    plt.text(x, y,'%.1f' % pop, fontsize=10,
             ha='center', va='center', color='brown')
    
    if pop >=7 :
        colors[s]= "#FF0000"            
    elif pop >=6 and pop <7 :
         colors[s] = "#FF7F00"          
    elif pop >=5 and pop <6:
         colors[s] = "#FF7256"
    elif pop >=4 and pop <5:
         colors[s] = "#B3EE3A"            
    elif pop >=3 and pop <4 :
         colors[s] ="#9ACD32"           
    elif pop >=2 and pop <3:
         colors[s]='#6495ED'
    elif pop >=1 and pop <2:
        colors[s] = "#0000CD"    
    elif pop >0 and pop <1:
        colors[s] = "#4B0082"  #'red'
    else:
        colors[s] = "red"
ax1 = plt.gca()

for nshape, seg in enumerate(m.states):
      #color = rgb2hex(colors[statenames[nshape]])
      color=colors[statenames[nshape]]
      poly = Polygon(seg, facecolor=color, edgecolor=color)
      ax1.add_patch(poly)

for nshape, seg in enumerate(m.taiwan):
    poly = Polygon(seg, facecolor="#8e2424")  #'brown'
    ax1.add_patch(poly)

for nshape, seg in enumerate(m.hongkong):
    poly = Polygon(seg, facecolor='brown')
    ax1.add_patch(poly)
#----------------------------------------------------------------------------------
  

plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
plt.savefig('5月各个地区销售总额分布.png',ppi = '500')
plt.title('5月各个地区销售总额分布')
plt.show()
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python可以使用多个库来绘制城市地图,其中最常用的包括matplotlib和folium。下面以这两个库为例,介绍如何使用Python绘制城市地图。 1. 使用matplotlib绘制城市地图: 首先,需要准备好地图的数据,一般为地理坐标(经纬度)和对应的数值,例如城市的人口密度数据。 导入matplotlib包,使用Basemap类来创建地图对象,并设置地图的中心点和缩放级别。 然后,通过调用Basemap对象的plot()方法来绘制地图,可以传入经纬度坐标和对应的数值,用不同的颜色或大小来表示不同的数值。 最后,使用show()方法来显示地图。 以下是使用matplotlib绘制城市地图的简单示例代码: ``` python import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap # 创建地图对象 map = Basemap(llcrnrlon=115, llcrnrlat=30, urcrnrlon=120, urcrnrlat=35, resolution='i') # 绘制海岸线 map.drawcoastlines() # 绘制国界线 map.drawcountries() # 绘制省界线 map.drawstates() # 绘制城市坐标点 x, y = map(116.4, 39.9) # 北京的经纬度 map.plot(x, y, 'ro', markersize=5) # 以红色圆点表示 # 显示地图 plt.show() ``` 2. 使用folium绘制城市地图: folium是基于leaflet.js的Python库,可以生成互动式的地图,具有缩放、标记和弹出式信息等功能。 首先,导入folium包,并创建一个Map对象,设置地图的中心点和缩放级别。 然后,通过调用Map对象的方法来添加地图的标记、弹出式信息等。 最后,使用save()方法将地图保存为html文件。 以下是使用folium绘制城市地图的简单示例代码: ``` python import folium # 创建地图对象 map = folium.Map(location=[39.9, 116.4], zoom_start=12) # 添加标记和弹出式信息 folium.Marker(location=[39.9, 116.4], popup='北京').add_to(map) # 保存地图为html文件 map.save('map.html') ``` 通过这些方法,可以利用Python绘制城市地图,进一步进行数据可视化和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值