use*_*817 4 python fonts matplotlib
我正在使用 matplotlib 制作 python 绘图。
在代码的开头,我使用:
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']
Run Code Online (Sandbox Code Playgroud)
为了改变我的图中文本的字体。
我也用:
ax.text(0.5,0.5, r'$test_{1}$', horizontalalignment='center', verticalalignment='center', size=18)
Run Code Online (Sandbox Code Playgroud)
但这段文字不是 Times New Roman。
如何将ax.textTimes 变成新罗马字体?
谢谢。
fontdictAxes.text matplotlib 文档说:
如果 fontdict 为 None,则默认值由您的 rc 参数确定。
因此,您必须包含fontdict=Nonein ax.text(),以便按照 中指定的方式显示其字体rcParams。
ax.text(..., fontdict=None)
Run Code Online (Sandbox Code Playgroud)
该参数自matplotlib 2.0.0fontdict起可用。
此外,对于像 之类的数学表达式$a=b$,文档说:
可以使用mathtext.default rcParam更改此默认[字体] 。这很有用,例如,通过将数学文本设置为常规,使用与常规非数学文本相同的字体。
因此,您还需要将默认字体设置为“常规”:
rcParams['mathtext.default'] = 'regular'
Run Code Online (Sandbox Code Playgroud)
您的代码现在应该类似于:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']
plt.rcParams['mathtext.default'] = 'regular'
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
ax.text(0.5, 0.5, '$example$', horizontalalignment='center',
verticalalignment='center', size=18, fontdict=None)
plt.show()
Run Code Online (Sandbox Code Playgroud)