在matplotlib中旋转colorbar tick标签

时间:2015-08-17 12:09:16

标签: python numpy matplotlib colorbar

我想旋转颜色条刻度标签,使它们垂直读取而不是水平读取。我已尝试使用cbar.ax.set_xticklabelscbar.ax.ticklabel_format来考虑尽可能多的变体,依此类推rotation='vertical',但尚未完全落实。

我在下面提供了一个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

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

2 个答案:

答案 0 :(得分:5)

您可以使用cbar.ax.set_xticklabels更改轮播(如果您有垂直颜色条,则使用set_yicklabels。)

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

enter image description here

修改

要正确设置标记,您可以搜索clevs1数组中第一个标记应使用np.argmin的位置,并在clevs1时使用该标记对set_xticklabels进行索引}:

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

enter image description here

答案 1 :(得分:5)

如果您对刻度线位置和标签感到满意并且只想旋转它们:

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