Python matplotlib条件格式标签

Python matplotlib条件格式标签,python,matplotlib,Python,Matplotlib,我有一个水平条形图,其中我正在使用命令设置标签: ax.set_yticklabels(df_chart.country_group) 我需要一些标签是粗体的(如果可能的话,对齐中心),这取决于标签的名称 我试过: ax.set_yticklabels(df_chart.country_group, weight=["bold", "bold", "normal"...]) 但函数不接受列表。 我还尝试了一个循环: for label in ax.get_yticklabels():

我有一个水平条形图,其中我正在使用命令设置标签:

ax.set_yticklabels(df_chart.country_group)
我需要一些标签是粗体的(如果可能的话,对齐中心),这取决于标签的名称

我试过:

ax.set_yticklabels(df_chart.country_group, weight=["bold", "bold", "normal"...])
但函数不接受列表。 我还尝试了一个循环:

for label in ax.get_yticklabels():
     if label in ["World", "Developing countries", "Developed countries"]:
         label.set_fontproperties(weight="bold")

但是我无法从文本对象提取标签值。

正确,您不能将列表用于此类字体属性。第二种方法的方向是正确的。您需要
从标签中获取_text()
,以便与其他字符串进行比较

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.plot([1,3,12])
ax.set_yticks([1,3,7,11])
ax.set_yticklabels(list("ABCD"))

for label in ax.get_yticklabels():
    if label.get_text() in ["B","C"]:
        label.set_weight("bold")

plt.show()


请注意,与本例一样,只有在先前通过
set\u*ticklabels
设置标签文本的情况下,此选项才有效

正确,您不能将列表用于此类字体属性。第二种方法的方向是正确的。您需要
从标签中获取_text()
,以便与其他字符串进行比较

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.plot([1,3,12])
ax.set_yticks([1,3,7,11])
ax.set_yticklabels(list("ABCD"))

for label in ax.get_yticklabels():
    if label.get_text() in ["B","C"]:
        label.set_weight("bold")

plt.show()

请注意,与本例一样,只有在先前通过
set\u*ticklabels
设置标签文本的情况下,此选项才有效