如何更改 Matplotlib 中颜色条刻度标签的字体大小?

Posted

技术标签:

【中文标题】如何更改 Matplotlib 中颜色条刻度标签的字体大小?【英文标题】:How to change the font size of tick labels of a colorbar in Matplotlib? 【发布时间】:2020-05-18 16:23:14 【问题描述】:

我正在为我的数据创建一个混淆矩阵图。在绘图旁边,我放置了一个颜色条并想要更改颜色条刻度标签的字体大小。我在互联网上搜索了一段时间,但由于我使用imshow 创建颜色条,因此无法弄清楚如何更改颜色条刻度的字体大小。这可能是因为以这种方式创建颜色条并不是网络上大多数地方(例如here 和here)所做/建议的常用方法。所以我需要你的帮助。以下是我创建情节并在其旁边添加颜色条的方式:

data=np.array([[0.83, 0.6,  0.76],[0.59, 0.46, 0.52],[0.62, 0.58, 0.88]])
xTicksMajor, yTicksMajor = [0.5, 1.5, 2.5], [0.5, 1.5, 2.5]
xTicksMinor, yTicksMinor = [0, 1, 2], [0, 1, 2]

fig, ax = plt.subplots()
cmapProp = 'drawedges': True, 'boundaries': np.linspace(0, 1, 13, endpoint=True).round(2)
m = ax.imshow(data, cmap=plt.cm.get_cmap('Oranges'))
m.set_clim(0, 1)
ax.figure.colorbar(m, ax=ax, **cmapProp)
ax.set_xticks(xTicksMajor)
ax.set_yticks(yTicksMajor)
ax.set_xticks(xTicksMinor, minor=True)
ax.set_yticks(yTicksMinor, minor=True)
ax.yaxis.grid(True, color='black', linestyle='-', linewidth=0.5)
ax.xaxis.grid(True, color='black', linestyle='-', linewidth=0.5)
thresh = data.max() / 1.4
    for i, j in itertools.product(range(data.shape[0]), range(data.shape[1])):
        ax.text(j, i, format(data[i, j], '.2f'),
                horizontalalignment="center",
                verticalalignment='center',
                color="black" if data[i, j] > thresh else "dimgrey",
                fontsize=26)
    fig.savefig('temp.png', dpi=200) 
    plt.close()

我尝试如下更改刻度的字体大小:

cmapProp = 'drawedges': True, 'boundaries': np.linspace(0, 1, 13, endpoint=True).round(2), 'fontsize': 14

但这给了我以下错误:

TypeError: init() 得到了一个意外的关键字参数 'fontsize'

我想知道,如何更改颜色栏旁边刻度标签的字体大小?随意提出建议,例如以不同的方式创建颜色栏,以便轻松更改字体大小。

另外,上面的代码结果如下图所示:

【问题讨论】:

【参考方案1】:

这个怎么样:

...
fig, ax = plt.subplots()
cmapProp = 'drawedges': True, 'boundaries': np.linspace(0, 1, 13, endpoint=True).round(2)
m = ax.imshow(data, cmap=plt.cm.get_cmap('Oranges'))
m.set_clim(0, 1)

# And here try this:
cbar = ax.figure.colorbar(m, ax=ax, **cmapProp)
cbar.ax.tick_params(labelsize=25)  # set your label size here
...

输出:

粗体标签:

...
cbar = ax.figure.colorbar(m, ax=ax, **cmapProp)
cbar.ax.tick_params(labelsize=25)
for tick in cbar.ax.yaxis.get_major_ticks():
    tick.label2.set_fontweight('bold')
...

输出:

【讨论】:

谢谢!您能否也说说如何使颜色条的刻度标签粗体 没问题。关于粗体我需要尝试一下 我用粗体 e.x. 更新了答案,看起来很奇怪,但这是我知道的唯一方法)

以上是关于如何更改 Matplotlib 中颜色条刻度标签的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib 颜色条刻度标签格式

matplotlib自定义设置plt.colorbar函数配置颜色条的刻度数实战:自定义设置颜色条刻度并为刻度值进行命名和标签化

Python / Matplotlib:带有contourf的颜色条不尊重自定义cmap的刻度标签

matplotlib 中的科学记数法颜色条

matplotlib 中的科学记数法颜色条

在matplotlib颜色栏中隐藏每个第n个刻度标签的最干净方法?