繁体   English   中英

如何更改各个颜色条标签的字体粗细?

[英]How to change the font weight of individual colorbar labels?

我想为每个colorbar标签设置不同的字体权重。

我试图让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 演示适用于我。 即使这个解决方案能够工作也不理想,因为我可能需要手动指定所有内容。

在这个问题中会更加方便。 在那里,我了解到常规x和y轴的单个标签的字体大小可以通过调用来更新

label = axes.yaxis.get_major_ticks()[2].label
label.set_fontsize(size)

通过set_fontweight替换set_fontsize set_fontweight正确更新所选标签的权重。 不幸的是,我找不到相应的axes.yaxis.get_major_ticks()[2].label为colorbar。

是否可以直接更改颜色条的各个标签的字体粗细? 直接我的意思是不使用在现有标签上方绘制一些新文本的解决方法。 如果这不可能,也可以理解在现有标签上方绘制文本的解决方案,其自动使用先前标签的位置和内容并且仅调整字体粗细。

谢谢!

正如@ImportanceOfBingErnest所指出的, set_fontweight适用于设置单个颜色条标签的权重。 我不得不尝试一些事情来找到哪个调用会给我定义颜色条标签的文本对象。 可以在cbar.ax.get_yticklabels()中访问它们。 下面的代码段正确地更改了第二个颜色条标签的重量:

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.get_yticklabels()[1].set_fontweight(1000)
plt.show()

代码输出(内联图像的声誉不足)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM