python - 更改 Matplotlib 图中单词中某些字母的字体类型

标签 python matplotlib plot

比如说, 这是我想用不同字体的“LEGEND”中的“L”绘制的图。

import matplotlib.pyplot as plt
plt.plot([1,2,3],[4,5,6])
plt.legend(['LEGEND'])
plt.show()

enter image description here

目前,我 latex 出我想要不受影响的文本,并更改​​整个功能的字体。像这样。

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
font_name = fm.FontProperties('Rage Italic').get_name()
plt.plot([1,2,3],[4,5,6])
plt.legend(['L$EGEND$'],prop={'family':font_name, 'size':14})
plt.show()

enter image description here

有没有更简单的方法来做到这一点,因为,在我的实际项目中,我必须做这样的事情 $($l$/w)_{sub} = 1$ 来改变整个代码中的 l 字体非常麻烦。

最佳答案

请注意,除非您使用 usetex=True,否则您将不会使用 Latex,而是使用 matplotlib 的 mathtext 。 这允许您对字体使用不同类型的修改,与 latex 中已知的相同,例如用于斜体文本的 \mathit 等。

因此您可能会选择类似的东西

ax.legend(['$\mathcal{L}\mathrm{EG}\mathit{END}$'], prop={'size':14})

enter image description here

使用真正的 latex 渲染实际上可能对您有更多帮助,因为原则上它允许您使用任意数量的不同字体。

import matplotlib.pyplot as plt
plt.rcParams['text.usetex'] = True
plt.rcParams['text.latex.preamble'] = [
        r'\usepackage[T1]{fontenc}',
        r'\usepackage{cyklop}' ]


fig, ax=plt.subplots()
ax.plot([1,1,1,1,10])

tx = r'{\fontfamily{cyklop}\selectfont L}' + \
     r'{\fontfamily{bch}\selectfont E}' + \
     r'{\fontfamily{phv}\selectfont G}' + \
     r'{\fontfamily{lmtt}\selectfont END}'

ax.legend([tx], prop={'size':14})

plt.show()

enter image description here

关于python - 更改 Matplotlib 图中单词中某些字母的字体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410618/

相关文章:

Python方法覆盖,签名重要吗?

python - Matplotlib rcParams 无法识别 "Times New Roman"(mac High Sierra)

python - 导入wx.lib.py时为"Import Error: NumPy not found"

python - 使用 matplotlib 二维等高线绘图添加额外的等高线

Python Tkinter 在 GUI 中嵌入 Matplotlib

python - 设置matplotlib中y轴系数的颜色

python - 用 Conv1D 替换密集自动编码器中的一层

python - gevent 猴子补丁破坏了 gevent.sleep(0)?

python - 如何在 Python 中对嵌套字典进行 2 次排序?

python - 有没有办法在matplotlib中获取xticklabel的坐标?