【发布时间】:2019-06-04 09:59:17
【问题描述】:
我想为每个颜色条标签设置不同的字体粗细。
我尝试让 LaTeX 以下列方式格式化标签:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
im = ax.imshow(np.random.rand(50, 50)/20)
cbar = ax.figure.colorbar(im, ticks=np.arange(0, 0.05, 0.01))
cbar.ax.set_yticklabels([r'{\fontsize{50pt}{3em}\selectfont{}{0}}',
r'{\fontsize{40pt}{3em}\selectfont{}{0.01}}',
r'{\fontsize{30pt}{3em}\selectfont{}{0.03}}',
r'{\fontsize{20pt}{3em}\selectfont{}{0.03}}',
r'{\fontsize{10pt}{3em}\selectfont{}{0.04}}',
r'{\fontsize{1pt}{3em}\selectfont{}{0.05}}', ])
但这只会将标签文本更新为整个字符串(例如,{\fontsize{50pt}{3em}\selectfont{}{0}})。 pyplot TeX demo 适合我。即使这个解决方案可行,它也不是理想的,因为我可能需要手动指定所有内容。
在question 中会更方便。在那里,我了解到可以通过调用来更新常规 x 和 y 轴的单个标签的字体大小
label = axes.yaxis.get_major_ticks()[2].label
label.set_fontsize(size)
将set_fontsize 替换为set_fontweight 会正确更新所选标签的权重。
不幸的是,我找不到与axes.yaxis.get_major_ticks()[2].label 对应的颜色条。
是否可以直接更改颜色栏各个标签的字体粗细?直接我的意思是不使用诸如在现有标签上方绘制一些新文本之类的解决方法。 如果这是不可能的,那么在现有标签上方绘制文本的解决方案也将不胜感激。
谢谢!
【问题讨论】:
-
set_fontweight应该可以工作。你能在没有的地方显示minimal reproducible example 吗? -
嗨@ImportanceOfBeingErnest,感谢您坚持
set_fontweight应该工作!当人们找到正确的方法来提取定义标签的文本对象时,它就会起作用。我将发布我自己问题的答案。
标签: python-3.x matplotlib colorbar