在matplotlib中旋转colorbar tick标签

Kie*_*unt 4 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()
Run Code Online (Sandbox Code Playgroud)

示例图像

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

小智 12

这是从 Matplotlib 3.4 开始旋转刻度标签的惯用方法(也很可能是早期版本)

cbar.ax.tick_params(rotation=45)
Run Code Online (Sandbox Code Playgroud)


Åsm*_*und 6

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

cbar.ax.set_xticklabels(cbar.ax.get_xticklabels(), rotation='vertical')
Run Code Online (Sandbox Code Playgroud)


tmd*_*son 5

您可以使用cbar.ax.set_xticklabels更改旋转(或者set_yicklabels如果您有垂直颜色条).

cbar.ax.set_xticklabels(clevs1[::1],rotation=90)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑:

要正确设置蜱,你可以搜索你的地方在clevs1数组中的第一跳应该是使用np.argmin,并使用该索引clevs1,当你set_xticklabels:

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

在此输入图像描述