Как использовать Bsaemap для рисования двух наборов контурных линий на одной карте? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть два набора данных, которые должны быть нанесены на одну карту с использованием разных цветовых контуров. Я создал сетку с двумя наборами данных высот на одной сетке, но моя программа могла нарисовать только один набор данных на график и второй набор данных, казалось, не могли быть нарисованы. Я получил предупреждение пользователя, как и после, и второй набор данных не может быть нанесен на график, я попытался включить уровни, но это не сработало. Что-то не так с моим кодом ? Как нарисовать два набора контурных линий на одной карте? «TPL»: метод интерполяции «Maskout.shp2clip»: для отображения точек за пределами области интереса. Цель состоит в том, чтобы рисовать контурные линии без учета экранированных точек.

UserWarning: В пределах диапазона данных не было обнаружено уровней контуров. cj1 = m.contour (cx, cy, cz2, colors = 'r')

m = Basemap(projection='merc', llcrnrlat=2, urcrnrlat=25, \
                        llcrnrlon=99, urcrnrlon=122, resolution='c',ax=ax)
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])
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False
plt.title(u'M2同潮图', fontdict={'size': 15})

#等高线
# fig,ax = plt.subplots()
cx, cy = np.mgrid[99:122:0.5, 2:25:0.5]
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.clabel(clip1,inline=True,fmt='%.2f',fontsize=10,colors='black')

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