如何在 matplotlib 的文本字符串中加粗单个单词?

How to bold a single word in a string of text in matplotlib?

我正在尝试制作图表,table,然后将文本显示为图形。 我试图通过使用一个 ax_text 对象来简化文本。但是,我不知道如何在 ax_text.annotate() 函数中加粗一个单词。我试过 weight='bold',但这会将整个字符串加粗。另外,我尝试了 ASCII \033[0m & \033[1m,但没有用。我可以制作单独的 ax_text 个对象并为每个粗体字创建一个对象,但找出合适的 xy 坐标将很困难并且可能会更改,因为文本长度可能会更改。

如何让 ax_text 的注释调用仅将文本中的单个单词加粗?

import pandas as pd
import matplotlib.pyplot as plt

fig, (ax, ax_table, ax_text) = plt.subplots(nrows=3, figsize=(10,8), gridspec_kw=dict(height_ratios=[4,1,1]))
tbl = (ax_table.table(rowLabels=["RowLabel1","RowLabel2", 'RowLabel3'], 
        colLabels=['ColLabel1', 'ColLabel2', 'ColLabel3'], 
        cellText=[["1", "2", "3"],
                  ["1", "2", "3"],
                  ["1", "2", "3"]], 
        cellLoc='center',
        loc='center'))

tbl.auto_set_font_size(True)
tbl.set_fontsize(10)
tbl.scale(1,1)
ax_table.axis('off')

text = "This is text. I want the word 'blah' to be Bold."
ax_text.axis('off')
ax_text.annotate(text, wrap=True, xy=(-0.12,1), xycoords='axes fraction', weight='bold', verticalalignment='top')

fig

您可以指示 matplotlib 使用 LaTeX 进行文本格式设置:https://matplotlib.org/stable/tutorials/text/usetex.html

plt.rc('text', usetex=True)
text = r"This is text. I want the word '\textbf{blah}' to be Bold."