簡體   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