Неправильная маркировка контуров базовой карты - PullRequest
1 голос
/ 31 октября 2019

У меня есть контурный график в базовой карте matplotlib - пунктирные отрицательные контуры, положительное твердое тело. Цветная полоса для этого поля рисуется неправильно. Тики на цветовой шкале правильные [-100,100], однако полоса сжимается, черточки, которые должны выглядеть равномерно распределенными по всему диапазону цветовой полосы, сжимаются около нуля. Код размещен ниже

xlon,xlat = np.meshgrid(lon,lat)

mapLineColor = [0,0,0,0.5]
panel_labels = ['(a)']

# initialize the plot
fig,ax = PP.subplots(1,1,figsize=(10,8))

# initialize the map
#m = Basemap(projection='robin',lon_0=-120,resolution='c',ax=ax)
m = Basemap(projection='merc', ax=ax, lat_0=35, lon_0=210,
    resolution = 'h', area_thresh = 1000.0,
    llcrnrlon=90, llcrnrlat=-10,
    urcrnrlon=295, urcrnrlat=75)

# plot height contorus
norm = mpl.colors.Normalize(vmin=-100,vmax=100)
levels = np.arange(-100,120,20)

#create the z contour plot
clptn = m.contour(xlon, xlat, z250_nat100nat_pnw_avg, levels=levels, vmin=-100,vmax=100, latlon=True, colors='b',norm=norm)

# add an axis for the z colorbar
cbar_ax = fig.add_axes([-0.025, 0.275, 0.02, 0.45])

# draw the colorbar
cb = fig.colorbar(clptn, cax=cbar_ax, label='z250 Height Anomaly [m]')
#cb.set_ticks(levels)
cb.ax.yaxis.set_ticks(levels)
cbar_ax.set_yticklabels(levels) 
cb.set_clim([-100,100])
cb.ax.yaxis.set_ticks_position('left')
cb.ax.yaxis.set_label_position('left')

Это вывод:

contour colorbar fail

Что не так с моим кодом, что цветовая полоса не охватывает весь диапазон контуров?

1 Ответ

0 голосов
/ 31 октября 2019

Я думаю, потому что диапазон значений уровней отличается от диапазона значений широты.

Может быть, вы можете установить уровни, как показано ниже

levels = np.arange(np.floor(xlat.min()),np.ceil(xlat.max()))
...