如果我使用 matplotlib 保存图形,有时某些字符(例如 endash、ű énd ő)的位置比其他字符低。不仅在图例中,而且在标签和标题中也是如此。我在 Ubuntu 11.10 和 12.04 上使用 matplotlib 1.0.1 和 1.1.1~rc1 进行了尝试。文件源为utf-8编码,Python版本为2.7.2+。这是来源:
import matplotlib.pyplot as plt
from numpy import sin, linspace, pi
x = linspace(0, 20, 1000)
plt.plot(x, sin(x), label=u"Hurrá, őrtűz! Szűztűz.")
plt.plot(x, sin(x), label=u"xxxxá, őx–x–xűx! Sxűxxűx.")
plt.plot(x, sin(x+pi/2), label=u"B–A őrűr ()")
plt.plot(x, sin(x-pi/2), label=u"B–A őrűr")
plt.plot(x, sin(x+pi), label=u"xãxâxőxŐxűxŰx–x endash")
plt.plot(x, sin(x+.1), label=u"őrtűz !")
plt.plot(x, sin(x+.2), label=u"őr tűz! (")
plt.plot(x, sin(x+pi+.2), label=u"őrült tűzlány ãxâ")
plt.title(u"matplotlib version 1.0.1, source: utf-8, Ubuntu 11.10")
plt.legend()
plt.savefig("tmp_accent.pdf")
plt.savefig("tmp_accent.eps")
这是我得到的数字的一部分。(我用 evince 和 acroread 看过)。
我不擅长字体,但我在 matplotlibrc 中设置了 font.sans-serif 字体,Bitstream Vera Sans、Lucida Grande、Verdana、Geneva、Lucid、Arial、Helvetica、Avant Garde 字体一一设置。
我可以使用 epspdf 命令行工具从 eps 版本制作一个更好的版本,但这种方法取决于平台。有没有更好的办法?问题存在于较新的 matplotlib 版本或较新的 Ubuntu 中?