python - 如何使用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()
解决方案
推荐阅读
- html - 复选框出现在引导面板之外
- c++ - C++:如何将派生对象传递给包含其抽象基的类?
- android - ArrayList 没有在每次用户点击 (onClick) Android 时启动
- java - netbeans 中的错误 UnsupportedClassVersionError
- swift - editButtonItem 对象是如何实例化的?
- reactjs - ReactJS 使用 colors.less 更改多个组件的背景颜色
- c++ - 为什么我必须 reinterpret_cast 指针指针?
- r - R Sqldf ALTER TABLE 语句
- function - 将一个数字范围映射到另一个数字范围的通用名称是什么?
- python - 无法根据规则“安全”将数组数据从 dtype('O') 转换为 dtype('float64')