Matplotlib中colorbar显示整数刻度并调字体大小,需用cbar.set_ticks()设整数位置、cbar.set_ticklabels()转字符串标签,并用cbar.ax.tick_params(labelsize=10)统一调字号。

在 Matplotlib 中让 colorbar 只显示整数刻度并控制字体大小,关键在于手动设置刻度位置(set_ticks)和标签格式(set_ticklabels),同时用 tick_params 或 fontsize 参数调整字体大小。
指定整数刻度位置
colorbar 本质是一个 Axes 对象,可通过 cbar.ax 获取其轴对象。先确定数据范围,再生成整数序列作为刻度位置:
- 用
np.arange(int(vmin), int(vmax)+1)生成从最小整数到最大整数的数组 - 注意:若 vmin/vmax 是浮点数,需用
int(np.floor(vmin))和int(np.ceil(vmax))更稳妥 - 调用
cbar.set_ticks(ticks)设置刻度位置
确保刻度标签为整数且无小数点
即使刻度位置是整数,Matplotlib 有时仍会显示如 2.0。可显式设置字符串标签:
cbar.set_ticklabels([str(int(x)) for x in ticks])- 或更简洁地:
cbar.set_ticklabels([f"{int(x)}" for x in ticks]) - 避免用
FormatStrFormatter('%d')(对 colorbar 的 tick formatter 支持不稳定)
调整字体大小
有两种常用方式,推荐后者更直接:
- 用
cbar.ax.tick_params(labelsize=12)统一设置刻度标签字号 - 或逐个设置:遍历
cbar.ax.get_yticklabels()并调用set_fontsize(12) - 如果 colorbar 是水平方向(
orientation='horizontal'),则用get_xticklabels()和tick_params(axis='x', labelsize=12)
完整示例代码
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randint(0, 10, (20, 20))
im = plt.imshow(data, cmap='viridis')
cbar = plt.colorbar(im)
vmin, vmax = data.min(), data.max()
ticks = np.arange(int(np.floor(vmin)), int(np.ceil(vmax)) + 1)
cbar.set_ticks(ticks)
cbar.set_ticklabels([f"{int(x)}" for x in ticks])
cbar.ax.tick_params(labelsize=10)
plt.show()










