I'm using Matplotlib to analyze results & generate figures. I need Greek symbols in the legend and axis labels, including $\epsilon$. However, the resulting text doesn't distinguish between "normal" \epsilon and \varepsilon --- both of them appear as \varepsilon. Here's a minimal example:
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()
When I process this on my Macbook (OS X El Capitan with Macports installations of TexLive and py27-matplotlib), everything renders correctly except the \epsilon.
ETA: the code does the right thing on a different machine (Scientific Linux).
You are not using TeX in your script. Matplotlib provides what is called MathText, which is a subset of LaTeX commands, rendered in normal UTF8 characters. This is how MathText looks like with the default fontset:
You can change the fontset to have "\varepsilon" look different than "\epsilon". However, it seems that out of the available fontsets, only "cm" has actually different symbols for those commands.
plt.rcParams["mathtext.fontset"] = "cm"
This will produce:
plt.rcParams["text.usetex"] =True
at the beginning of your script. This requires a working TeX installation.
The example would then look like this, where "\varepsilon" and "\epsilon" are indeed different.