底图轮廓颜色条无法正确标记轮廓

时间:2019-10-30 21:54:45

标签: python-3.x matplotlib contour matplotlib-basemap colorbar

我在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 :(得分:0)

我认为是因为级别值范围与纬度值范围不同。

也许您可以设置如下所示的水平

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