matplotlib 如何在plt.colorbar中设置刻度数?

svgewumm  于 2023-11-22  发布在  其他
关注(0)|答案(3)|浏览(226)

当我绘制一个带有颜色条的矩阵时,颜色条有10个刻度。由于颜色条必须非常小,刻度标签重叠。因此我想将刻度的数量从10减少到5。我不想减小字体大小!
有没有简单的方法可以做到这一点?我不想手动设置刻度...

enxuqcxy

enxuqcxy1#

MaxNickel股票代码可能适合您的目的?
classmatplotlib.ticker. MaxNm
在合适的位置选择不超过N个间隔
举例来说:

from matplotlib import ticker

# (generate plot here)
cb = plt.colorbar()
tick_locator = ticker.MaxNLocator(nbins=5)
cb.locator = tick_locator
cb.update_ticks()
plt.show()

字符串

bejyjqdl

bejyjqdl2#

为了记录在案,现在还可以通过以下方式实现:

cbar = plt.colorbar()
cbar.ax.locator_params(nbins=5)

字符串
ticker.MaxNLocator通信。

bfhwhh0e

bfhwhh0e3#

我发现使用cbar.ax.locator_params和ticker的两种解决方案在获得相同结果方面似乎并不一致。ticker似乎在获得bins的数量方面是一致的,而locator_params似乎想要强制端点具有tick(而不是,说一个刻度线接近端点,但不是在它)。我不知道在行为上的差异是什么,但足以说他们是不相同的。再次,这是假设你希望刻度的数量和你指定的完全一样。我想说,如果你想设置刻度的数量(但是让它们的位置自动确定),并且想提供你自己的不同标签,那么也许可以使用ticker来确保这些是一致的(尽管通常如果你提供自己的标签,你会希望位置得到保证)。

from matplotlib import ticker
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(4)
nbins = 7

z = np.random.normal(size=(5,10))
fig, ax = plt.subplots(1, 1)
img = ax.matshow(z, cmap="bwr_r", aspect='auto', vmin=-10, vmax=10)
cbar = fig.colorbar(img)
cbar.ax.locator_params(nbins=nbins)
ax.set_title('locator_params')
plt.show() 

fig, ax = plt.subplots(1, 1)
img = ax.matshow(z, cmap="bwr_r", aspect='auto', vmin=-10, vmax=10)
cbar = fig.colorbar(img)
tick_locator = ticker.MaxNLocator(nbins=nbins)
cbar.locator = tick_locator
cbar.update_ticks()
ax.set_title('ticker')
plt.show()

字符串
100d1x

的字符串

相关问题