python – 如何更改matplotlib中的默认乳胶字体

我想在matplotlib中使用像’$x ^ 2 $’这样的乳胶语法来标记或注释.但是如何将乳胶的默认字体’Roman’更改为’times new roman’,而不更改任何其他内容?谢谢

对不起,我无法上传图片作为本网站的新用户.

我的计算机上没有安装乳胶,也不想安装乳胶.

例如

import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 1.0 + 0.01, 0.01)
s = np.cos(4 * np.pi * t) + 2
plt.rc('font', family='times new roman', size=16)
plt.plot(t, s)
plt.annotate('$Roman\ by\ TeX:\ x\ y$',(0.33,1.5))
plt.annotate('Times New Roman: x y', (0.33,1.4),style='italic')
plt.subplots_adjust(top=0.8)
plt.show()

最佳答案 matplotlib中LaTeX的默认设置在.matplotlibrc文件中设置.在Linux上,这是在〜/ .config / matplotlib / matplotlibrc中,在其他平台上它位于〜/ .matplotlib / matplotlibrc(其中〜是你的主目录).在这个文件中有各种选项可以控制matplotlib的行为.

以下设置确定您是否对matplotlib中的所有文本使用LaTeX(您可能不想打开它,但可能):

text.usetex        : false

这决定了图的族(这里显示的衬线)和用于衬线的字体:

font.family        : serif
font.serif         : Times New Roman

以下确定用于数学渲染的内容(这可能是您想要的).如果您取消注释此行,matplotlib将使用上面定义的serif字体(当前为Times)来渲染数学:

mathtext.rm  : serif
mathtext.it  : serif:italic
mathtext.bf  : serif:bold
mathtext.fontset: custom

您可以在SciPy wiki上找到有关在this documentation中的matplotlib中自定义LaTeX的更多信息. font.serif设置允许您将serif字体更改为您想要的任何内容.不幸的是,如果你要求Times New Roman,似乎matplotlib TeX引擎将始终使用罗马字体,见下文:

宋体:

宋体:

Bitstream Vera Serif:

Times New Roman(实际上显示罗马):

正如你所看到的,前三张图片是正确的,但最终的图片肯定不是Times New Roman.如果可接受的替代字体,比特流Vera Serif(从底部开始的第二个)可能在外观上足够接近.

点赞