中国地图一般按一下步骤绘制:
1. pip安装goes、pyproj、basemap三个库(尽量下载好whl文件再用pip安装:教程);
2. 下载中国大陆和台湾省行政地图信息shp文件(百度一下去官网下或者下载地址);
3. 获取各个省省会、直辖市的经纬度信息;
4. 绘制地图;
代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
fig = plt.figure()
ax = plt.gca()
# region of mainland China and Taiwan
map = Basemap(projection='mill',
llcrnrlat = 14, # left corner latitude
llcrnrlon = 72, # left corner longitude
urcrnrlat = 55, # right corner latitude
urcrnrlon = 135, # right corner longitude
resolution='l',
area_thresh=10000)
# map.drawmapboundary(fill_color='aqua') # foreground color
map.readshapefile('gadm36_CHN_1', 'states', drawbounds=True) # mainland China
map.readshapefile('gadm36_TWN_1', 'states', drawbounds=True) # Taiwan Province
# map.drawcoastlines(color='#A8A8A8', linewidth=0.5)
def draw_scatter_map(map, df, lon, lat, label, save=False, save_format='.svg'):
'''
Draw the organic food concern map in a specific region or globally.
:param map: specific region or world map
:param df: DataFrame type data
:param lon: longitude
:param lat: latitude
:param label: figure label(title)
:param save: save as the .svg or not
:param save_format: if save is True, specify the save format
:return:
'''
value = np.array(df['Concern'], dtype=float)
size = value / np.mean(value) * 35
x, y = map(lon, lat)
map.scatter(x, y, s=size, c='r', alpha=0.7, zorder=10)
ax.set_xlabel(label)
if save:
fig.savefig(label+save_format)
# plt.show()
df = pd.read_csv("./data/organic rice.csv")
lon = np.array(df['longitude'])
lat = np.array(df['latitude'])
draw_scatter_map(map, df, lon, lat, 'organic rice', save=True, save_format='.svg')
效果图:
世界地图相对简单,贴一下代码和效果图:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
df=pd.read_csv("oil map.csv")
fig, ax = plt.subplots()
earth = Basemap(ax=ax)
earth.drawcoastlines(color='#A8A8A8', linewidth=0.5)
ax.scatter(df['lon'], df['lat'], df['organic oil']* 1.5, c='red', alpha=0.7, zorder=10)
ax.set_xlabel("organic oil")
fig.savefig('oil.svg')