matplotlib中colorbar tick标签的旋转

2024-04-26 06:49:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想旋转颜色条刻度标签,使其垂直而不是水平阅读。我用cbar.ax.set_xticklabelscbar.ax.ticklabel_format等方法尝试了尽可能多的变体,但还没有完全实现。

我提供了以下MWE:

import numpy as np
import matplotlib.pyplot as plt

#example function
x,y = np.meshgrid(np.linspace(-10,10,200),np.linspace(-10,10,200))
z = x*y*np.exp(-(x+y)**2)

#array for contourf levels
clevs = np.linspace(z.min(),z.max(),50)

#array for colorbar tick labels
clevs1 =np.arange(-200,100,10)

cs1 = plt.contourf(x,y,z,clevs)

cbar = plt.colorbar(cs1, orientation="horizontal")
cbar.set_ticks(clevs1[::1])

plt.show()

Example Image

任何指针都会非常感谢-我相信这一定很简单。。。


Tags: importforasnppltaxarrayset
2条回答

如果您对记号位置和标签满意,并且只想旋转它们:

cbar.ax.set_xticklabels(cbar.ax.get_xticklabels(), rotation='vertical')

你可以使用cbar.ax.set_xticklabels来改变旋转(或者set_yicklabels如果你有一个垂直的颜色条)。

cbar.ax.set_xticklabels(clevs1[::1],rotation=90)

enter image description here

编辑:

要正确设置记号,可以在clevs1数组中搜索第一个记号应使用np.argmin的位置,并在set_xticklabels时使用它索引clevs1

tick_start = np.argmin(abs(clevs1-clevs[0]))
cbar.ax.set_xticklabels(clevs1[tick_start:],rotation=90)

enter image description here

相关问题 更多 >