Matplotlib原料乳胶"\ epsilon"仅产生"\ varepsilon"

Ber*_*lly 6 python latex matplotlib macports

我正在使用Matplotlib来分析结果并生成数字.我需要图例和轴标签中的希腊符号,包括$\epsilon $.但是,生成的文本不区分"正常"\ epsilon和\ varepsilon ---它们都显示为\ varepsilon.这是一个最小的例子:

import numpy as np
from pylab import *
import matplotlib.pyplot as plt

t = np.arange(0.0, 1.0 + 0.01, 0.01)
s = np.cos(4 * np.pi * t) + 2

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(t, s, 'k-', linewidth=2.0, label=r'$\epsilon$, $\varepsilon$, $\phi$, $\varphi$, $\sigma$, $\varsigma$')
plt.title(r'$\epsilon$, $\varepsilon$, $\phi$, $\varphi$, $\sigma$, $\varsigma$')
plt.xlabel(r'$t [M]$')
plt.ylabel(r'$\epsilon$, $\varepsilon$, $\phi$, $\varphi$, $\sigma$, $\varsigma$')
ax.legend(ncol=2, loc='lower left', fancybox=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

当我在我的Macbook上处理这个(OS X El Capitan,Macports安装了TexLive和py27-matplotlib)时,除了\epsilon 之外,一切都正确呈现.

ETA:代码在不同的机器上做正确的事(Scientific Linux).

Imp*_*est 7

您没有在脚本中使用TeX.Matplotlib提供了所谓的MathText,它是LaTeX命令的子集,以普通的UTF8字符呈现.这是使用默认字体集的MathText的样子:

在此输入图像描述

您可以更改字体集,使"\ varepsilon"看起来与"\ epsilon"不同.但是,似乎在可用的字体集中,只有"cm"实际上对这些命令具有不同的符号.

plt.rcParams["mathtext.fontset"] = "cm"
Run Code Online (Sandbox Code Playgroud)

这将产生:

在此输入图像描述


为了让Latex用于渲染文本,您需要专门告诉matplotlib这样做.一种选择是使用

plt.rcParams["text.usetex"] =True
Run Code Online (Sandbox Code Playgroud)

在脚本的开头.这需要一个有效的TeX安装.
这个例子看起来像这样,"\ varepsilon"和"\ epsilon"确实不同.

在此输入图像描述