Как использовать matplotlib для рисования двух наборов данных в одной точке сетки на карте - PullRequest
1 голос
/ 25 марта 2020

У меня есть два набора данных, которые должны быть нанесены на одну и ту же карту с использованием разных цветовых контуров. Я создал сетку с двумя наборами данных высот на одной сетке, но моя программа могла нарисовать только один набор данных на график и второй набор данных казались невозможными для рисования. Как я могу нарисовать два набора контурных линий на одной карте? «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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...