Matplotlib等高线地图色条

4
我正在将数据绘制成等高线地图。计算是基于翻译后的值进行的,因此我需要将其还原为原始值。代码的第四行是重新翻译的过程。 然而,当我绘制它时,色条显示相对值,并在色条顶部注明偏移值。这很奇怪,因为我检查了矩阵值,它包含原始值。

enter image description here

如何显示带有原始值的色条?
fig=plt.figure()
v=np.linspace(-180,180,25)
x,y = np.meshgrid(v,v)
z = np.add(z,-shift)
z = z.reshape(25,25).T 
plt.contourf(x,y,z,25)
fig.suptitle(AA(prefix)+' Input Data Contour Map')
plt.xlabel('$\phi$ (deg)')
plt.ylabel('$\psi$ (deg)')
plt.xticks(np.arange(-180, 181, 30))
plt.yticks(np.arange(-180, 181, 30))                                
plt.colorbar()

更新:我使用了set_ticklabels()进行临时修复,其中labels是自定义标签的列表。

但我仍在寻找更好的解决此问题的方法。

plt.colorbar().set_ticklabels(labels)

{{链接1:更新的等高线地图}}


根据你所拥有的数值,我猜测你可能无法或不应该这样做。移位量比变化量大约5个数量级,因此打印实际数值将使其他人难以解释。 - Elliot
@Elliot 我认为实际数值并不是太大的问题。我创建了一个临时解决方案来解决这个问题,如上面的更新所示。 - jjv
1个回答

2

Matplotlib不知道您的shift变量。它选择以这种方式绘制,因为您尝试可视化的更改是背景值的10^(-6)。

您可以像此pylab示例中所示一样,使用以下方法强制颜色条在特定位置具有刻度标记:

cbar = fig.colorbar(cax, ticks=[-1, 0, 1])
cbar.ax.set_yticklabels(['< -1', '0', '> 1'])  # vertically oriented colorbar

然而,这样做会使刻度非常难以阅读。

在绘图命令之前,我检查了z变量中的值并发现它包含原始值,因此这更像是matplotlib中的绘图问题。 - jjv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接