我正在使用 matplotlib 绘制数据,包括 LaTeX 字体。创建的 pdf 可以通过 evince、inkscape、GIMP 显示,但不能通过 acroread resp 显示。土坯阅读器。代码原型适用于很多图形,只有少数绘图存在此问题。
...
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111)
savedpi = 250
fileformat = 'pdf'
...
p12,=ax.plot(plimit12-binSize/2.0, mean12, '-', lw=2)
ax.set_yscale('log')
ax.yaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax.legend([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12], [ "C01", "C02", "C03", "C04", "C05", "C06", "C07", "C08", "C09", "C10", "C11", "C12"],numpoints=1, loc=1, ncol=3)
plt.savefig(savepath+'veloDisp'+'.pdf',dpi=None,format=fileformat)
这些有问题的文件之一可以在以下位置找到http://ubuntuone.com/0kuZIKYeZQyGckE5jonPy6
有人遇到过这样的问题吗?
编辑:谢谢 William Denman,实际上打开并打印成 pdf 作品,现在也可以在 acroread 中查看。有趣的是,其他使用 LaTeX 字体的绘图从一开始就可以工作。我没有收到任何错误消息,从中我可以猜测问题出在哪里,这就是我首先在这里问的原因。目前你的解决办法很好,谢谢。但是我真的很想知道如何避免这种情况。由于这些图应该成为出版物的一部分,因此我还必须考虑那些使用 Adobe pdf 查看器的人。
编辑:按照建议,我在 MPL 开发人员邮件列表上打开了一个线程,请参阅http://matplotlib.1069221.n5.nabble.com/PDF-not-read-by-Adobe-PDF-readers-td42580.html
编辑:由 matplotlib 开发人员解决!问题出在线路上
ax.axvline(x=1, c='#000000', lw='2', alpha=0.5)
其中包含一个字符串作为线宽。应该
ax.axvline(x=1, c='#000000', lw=2, alpha=0.5)
不幸的是,标准 pdf 后端还没有对此发出警告。