python画填色图时,如何让分层的填色变为渐变色
注:自己用来备忘的
以画海洋的地形图为例
数据为一个三维数据,有经度(lon),纬度(lat),高度(z)三个变量。
我们绘制的地形图为了美观,只想让colobar显示-100~0之间的高度,我们的代码如下:
level = [-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0]
#绘制填色图
a = ax.contourf(lon, lat, z, level, extend='both')
#制作色条
cb = plt.colorbar(a,ax = ax,shrink=0.78)
#设置色条的刻度,使其表示为-100,···,0
cb.set_ticks(level)
cb.ax.set_title('(m)', fontsize = 12)
得到的图片如下图所示
可以看出,色条不是渐变色,有明显分界,填色图中不同高度间的颜色也是明显分界的
接下来就是让色条变成渐变色
level = range(-100,0)#渐变色的关键就是level是连续的
le = [-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,-1,0]#le是色条需要显示的刻度值
#绘制填色图
a = ax.contourf(lon, lat, z, level, extend='both', cmap = 'viridis')
#制作色条
cb = plt.colorbar(a,ax = ax,shrink=0.78)
#设置色条的刻度,使其表示为-100,···,0
cb.set_ticks(le)
cb.ax.set_title('(m)', fontsize = 12)
新出的图就是这样渐变色的啦!