Matplotlib Tex设置字体

cxfofazt  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(121)

我希望在Latex文档中有一个matplotlib图,它使用与文档其余部分相同的字体。我在matplotlib文档中读到,如果你将rc参数'usetex'设置为true,它将使用'Computer Modern'字体,这也是Latex的标准字体。尝试这个给了我以下结果。


的数据
图的标题由matplotlib生成,标题由Latex文档生成。如你所见,字体不匹配。我认为两者都使用“计算机现代”,但不是同一个字体家族。标题(matplotlib)可能类似于“Sans Serif Roman”,而标题(Latex文档)类似于“Serif Roman”。我试着用下面的方法来改变字体家族:

plt.title("Lorem Ipsum", family='serif', fontsize=20)

字符串
但只要usetex被激活,它就没有效果。我也用fontdict试过,但它也没有以任何方式改变字体。另外,将字体名称直接写入字体族也不起作用。
有没有办法得到和Latex文档中相同的字体?

jjhzyzn0

jjhzyzn01#

好吧,在昨天花了半天时间寻找解决方案后,我现在在问问题5分钟后就被它绊倒了。
解决方法:

plt.rcParams['font.family'] = 'serif'

字符串
由于某些原因,当usetex=True时,设置fontfamily只能全局工作。

rseugnpd

rseugnpd2#

import matplotlib.pyplot as plt

plt.style.use('classic')
plt.style.use('dark_background')

字符串
范例:

import matplotlib.pyplot as plt
import numpy as np
from scipy import special

plt.style.use('classic')
plt.style.use('dark_background')

s = np.linspace(-50,40,150)
p0 = special.polygamma(0,s)
p1 = special.polygamma(1,s)
p2 = special.polygamma(2,s)

plt.plot(s,p2,linewidth=1,c='blue')
plt.plot(s,p1,linewidth=1,c='green')
plt.plot(s,p0,linewidth=1,c='red')
plt.ylim(-100,100)

plt.annotate(r'$\psi^{n}(s)=\frac{d^{n}}{dx^{n}}\ln\Gamma(s)$',xy=(5,-25),size=20,fontweight='bold')

plt.annotate(r'$\psi^{n}(s)=(-1)^{n+1}n!\zeta(n+1,s)$'+'\n'+'$\{s \in \mathbb{N} : s \geq 1\}$',xy=(1,-75),size=15,fontweight='bold')

plt.axhline(y=0,color='white',linewidth=.5)
plt.axvline(x=0,color='white',linewidth=.5)
plt.grid(lw=.5,ls=':')
plt.xlabel('s',fontweight='bold')
plt.ylabel(r'$\psi^{n}(s)$')

相关问题