Matplotlib: смешанный экспорт в pdf и png

#python #matplotlib #pdf #export

Вопрос:

Я создаю фигуру с figure, axes = plt.subplots(nrows=3, ncols=2) помощью matplotlib , рисую различные материалы axes[0,0].pcolormesh(...) , а затем экспортирую фигуру в PDF figure.savefig('figure.pdf') или PNG figure.savefig('figure.png') .

Мне приходится использовать PNG, потому что PDF-файл был бы огромным, но это делает метки рисунков и другие тексты размытыми.

Есть ли способ экспортировать рисунок в PDF-файл, чтобы метки и т. Д. Были векторной графикой, Но при этом графики экспортировались в PNG в результирующем PDF-файле? Короче говоря: экспорт в PDF, но участки внутри этого PDF в PNG (для небольших размеров файлов).

Комментарии:

1. PNG С matplotlib нет никаких проблем PDF

2. @kinshukdua Согласно принятому ответу ниже, есть.

3. это растеризация, и на самом деле это не так PNG , PDF как вы выразились

Ответ №1:

Это одно из огромных преимуществ Matplotlib по сравнению с другими библиотеками. Если вы это сделаете:

 fig, ax = plt.subplots()
ax.pcolormesh(np.random.randn(500, 500), rasterized=True)
fig.savefig('Test.pdf', dpi=50)
 

Оси и метки по-прежнему будут векторами, но pcolormesh они будут растрированы с разрешением 50 точек на дюйм. Конечно, для публикации вам следует использовать более высокий dpi, но он все равно отлично подходит для сокращения больших массивов данных. Обратите внимание, что при уменьшении выборки данных вы также получите артефакты сглаживания, поэтому используйте их с осторожностью.

PDF со встроенным растром

Комментарии:

1. Спасибо! Я не знал, что это так работает.