PDF, сгенерированный matplotlib, не может быть просмотрен в программе чтения акробатов

Я строю данные с помощью matplotlib, включая шрифты LaTeX. Созданный PDF-файл может отображаться evince, inkscape, GIMP, но не acroread и т. Д. Adobe Reader. Прототип кода работает с большим количеством рисунков, и только несколько графиков имеют эту проблему.

...
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

Кто-нибудь сталкивался с такой проблемой?

РЕДАКТИРОВАТЬ: Спасибо, Уильям Денман, на самом деле, открывая в evince и печатая в pdf-работах, теперь это можно посмотреть в acroread. Интересно, что другие сюжеты со шрифтами LaTeX работают с самого начала. Я не получаю никаких сообщений об ошибках, из которых я мог бы догадаться, в чем проблема, вот почему я спросил здесь в первую очередь. Пока ваш обходной путь в порядке, спасибо. Однако мне бы очень хотелось узнать, как этого вообще можно избежать. Поскольку эти сюжеты должны быть частью публикации, я должен подумать и о тех людях, которые используют Adobe PDF Viewer.

РЕДАКТИРОВАТЬ: Как предложено, я открыл поток в списке рассылки разработчиков MPL, см. http://matplotlib.1069221.n5.nabble.com/PDF-not-readable-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-бэкэнд не предупреждает об этом (пока).

1 ответ

После погони за моей собственной ошибкой в ​​matplotlib я понял, основываясь на этом посте, и реферал, который ОП делает на сайте matplotlib, что погоня за ошибками в matplotlib может быть сделана с помощью cairo. pip install cairo, Затем поверх всех других импортов MPL добавьте:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ...

import matplotlib
matplotlib.use("cairo")

from matplotlib.backends.backend_pdf import PdfPages
..etc.

в противном случае погоня не удастся, потому что серверная часть уже установлена ​​и загружена....

Другие вопросы по тегам