首页 > 解决方案 > 如何使用matplotlib在地图上同一网格点绘制两组数据

问题描述

我有两组数据需要使用不同颜色的轮廓绘制在同一张地图上。我在同一个网格网格上创建了​​一个包含两组高程数据的网格,但是我的程序只能在图表上绘制一组数据,而第二组数据好像画不出来。如何在同一张地图上画两组等高线?'TPL':一种插值方法 'Maskout.shp2clip':筛选感兴趣区域之外的点。目的是在不考虑屏蔽点的情况下绘制轮廓线。

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap

m = Basemap(projection='merc', llcrnrlat=2, urcrnrlat=25,
            llcrnrlon=99, urcrnrlon=122, resolution='c')
m.drawcoastlines()
m.fillcontinents(color='grey', lake_color='white')
m.drawparallels(np.arange(0, 30, 5), labels=[1, 1, 0, 1])
m.drawmeridians(np.arange(100, 125, 5), labels=[1, 1, 0, 1])

cx, cy = np.mgrid[99:122:0.5, 2:25:0.5]
ax = plt.gca()  # gca means get current axes, that is to say get the ax object
z1 = np.hsplit(self.shg1 * 100, 3)
z1_1 = z1[1]
cz = self.TPL_interpolation(cx, cy, z1_1)
cx, cy = m(cx, cy)
zf1 = plt.contour(cx, cy, cz, colors='k', linestyles=['--', '--'])
clip1 = maskout.shp2clip(zf1, ax, m, r"E:\世界shp\南海\nanhai_ocean.shp", 'Ocean')
# plt.gca().clabel(clip,inline=True,fmt='%.2f',fontsize=10,colors='black')

z2 = z1[2]
cz2 = self.TPL_interpolation(cx, cy, z2)
cx, cy = m(cx, cy)
cj1 = plt.contour(cx, cy, cz2, colors='red')
clip2 = maskout.shp2clip(cj1, ax, m, r"E:\世界shp\南海\nanhai_ocean.shp", 'Ocean')
# plt.clabel(contour2,inline=True,fmt='%.2f',fontsize=10,colors='red')
plt.show()

标签: pythonmatplotlibcontour

解决方案


推荐阅读