无论绘图值如何,如何指定颜色条范围并保持不变

时间:2018-06-05 12:40:40

标签: python numpy matplotlib matplotlib-basemap

我昨晚打了个电话,然后当我准备提交时,我想出来了。提交以防其他人需要它。

我正在底图上绘制多天的每小时气象值。

我希望每张地图始终保持相同的颜色条值。让我们说每个情节都是0-10。

有时值非常接近零,而其他值则为0-10。

for file in files:
    ncfile = Dataset(file)
    cbarticks=np.arange(0.0,10.0,0.5)
    bm.contour(x, y, to_np(energyproduction), 10, colors="black",vmin=0,vmax=10.0)
    bm.contourf(x, y, to_np(energyproduction), 10,cmap = get_cmap('jet'),vmin=0,vmax=10.0)
    plt.colorbar(shrink=.62,ticks=cbarticks)
    plt.show()

我设置它使得最小值和最大值始终为0和10.并且刻度总是0-10,增量为0.5。如何强制颜色条保持不变。

Plot showing colorbar when there is little difference in the data

Plot showing colorbar when there is larger differences in the data

我希望colorbar始终具有相同的

范围

1 个答案:

答案 0 :(得分:1)

问题出在我的contour()和contourf()中。之前我在函数中传递了10。

bm.contour(x, y, to_np(energyproduction), 10, colors="black",vmin=0,vmax=10.0)
bm.contourf(x, y, to_np(energyproduction), 10,cmap = get_cmap('jet'),vmin=0,vmax=10.0)

10指定意味着绘图的最小值和最大值之间有10个步骤。因此,如果只有0-1的值,您将获得.1绘制轮廓等的增量。

删除10并将其视为cbarticks,无论值如何,我都可以为每个绘图获取相同的颜色条值。

for file in files:
     ncfile = Dataset(file)
     cbarticks=np.arange(0.0,10.0,0.5)
     bm.contour(x, y, to_np(energyproduction), cbarticks, colors="black",vmin=0,vmax=10.0)
     bm.contourf(x, y, to_np(energyproduction), cbarticks, cmap = get_cmap('jet'),vmin=0,vmax=10.0)
     plt.colorbar(shrink=.62,ticks=cbarticks)
     plt.show()

我相信这与底图轮廓中的“级别”相同。

enter image description here

enter image description here