use*_*139 7 python latex matplotlib
我打算写一篇论文,并开始设置一个标准的Matplotlib文件来控制绘图格式.但是,我遇到了text.usetex : True选项问题.特别是,当我的所有数字都应该是sans-serif时,刻度标签默认为serif字体是令人恼火的.事实上-我设置font.family在rcParams文件无衬线,但仍然看到问题,因为在github上确定这里.
另外,当我usetex打开或关闭时,其他文本看起来不同- 这似乎令人惊讶,因为我告诉matplotlib每次都使用相同的字体.
因此,我想知道使用LaTeX渲染的实际好处是什么?由于Matplotlib已经可以处理标签中的LaTeX命令,xlabel('\alpha')并且可以接受用户输入到rcparams文件的字体,那么在文本上使用LaTeX会有什么不同呢?
为了实现我一致的sans-serif字体的目标,我不能只将matplotlib rcparams文件中的font.sans-serif设置为我在LaTeX中设置为sans-serif字体的字体吗?
感谢您的任何建议或提示!
小智 5
usetex当您需要 matplotlib 的内置 mathtext 中不存在的 LaTeX 功能时,该设置特别有用。但它也提供了更好的排版,您不必担心数学文本的非标准部分。
如果您比较下面的两个示例(基于本页末尾的示例),您会发现 LaTeX 版本在数学方面做得更好,尤其是求和。此外, mathtext 不知道\displaystyle但会自动使用该布局样式,这在某些情况下可能是不可取的。
就刻度标签字体的问题而言,我相信 matplotlib 使用默认的 LaTeX 数学字体作为标签。如果您尝试按照我在第二个示例中注释掉的代码行进行操作,您应该能够得到您想要的。
如果你只是制作相对简单的图,你应该看看tikzplotlib。它允许您以tikz允许轻松调整大小的格式保存数字。有关更多详细信息,请参阅我对这个问题的回答。
数学文本版本
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t,s)
plt.title(r'$\alpha_i > \beta_i$', fontsize=20)
plt.text(1, -0.6, r'$\sum_{i=0}^\infty x_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',
fontsize=20)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.savefig('fig_mathtext.pdf')
Run Code Online (Sandbox Code Playgroud)

乳胶版
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('text', usetex=True)
#rc('text.latex', preamble=r'\usepackage[eulergreek]{sansmath}\sansmath')
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
figure()
plt.plot(t,s)
plt.title(r'$\alpha_i > \beta_i$', fontsize=20)
plt.text(1, -0.6, r'$\displaystyle\sum_{i=0}^\infty x_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',
fontsize=20)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.savefig('fig_latex.pdf')
Run Code Online (Sandbox Code Playgroud)

使用 usetex 的好处包括排版 matplotlib 内置引擎不支持的复杂公式,以及使用(官方不支持的)text.latex.preamble设置包含任意前导码的能力。如果您将 matplotlib 图形嵌入到 LaTeX 文档中并且想要完全匹配字体(例如由于期刊样式表),则后者可能很有用。但对于大多数用途,我建议使用内置的数学文本渲染器。
| 归档时间: |
|
| 查看次数: |
1768 次 |
| 最近记录: |