[英]customize matplotlib ticklabels individually
请考虑以下示例,在该示例中,我想将标签“ C”的weight
更改为bold
。
df = pd.DataFrame(data={'value': [3, 5, 7, 4, 5]},
index=list('ABCDE'))
fig, ax = plt.subplots()
df.plot.barh(ax=ax)
我见过许多示例(例如tick_params
和set_yticklabels
)更改所有ticklabel或仅替换标签而不进行格式化 。
有没有一种方法可以单独自定义它?
这是这样做的一种方法:
from matplotlib import rc
import pandas as pd
import matplotlib.pyplot as plt
rc('text', usetex=True)
df = pd.DataFrame(data={'value': [3, 5, 7, 4, 5]},
index=list('ABCDE'))
fig, ax = plt.subplots()
df.plot.barh(ax=ax)
fig.canvas.draw()
new_labels = []
to_modify = 'C'
for lab in ax.get_yticklabels():
txt = lab.get_text()
if txt == to_modify:
new_labels.append(r'$\textbf{%s}$' %txt) # append bold face text
else:
new_labels.append(txt) # append normal text
ax.set_yticklabels(new_labels)
ImportanceOfBeingEarnest建议的替代方法 : set_fontweight
仅在不使用乳胶(TeX渲染)的情况下有效。
fig, ax = plt.subplots()
df.plot.barh(ax=ax)
to_modify = 'C'
for lab in ax.get_yticklabels():
if lab.get_text() == to_modify:
lab.set_fontweight('bold')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.