我想在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(从底部开始的第二个)可能在外观上足够接近.