Python PDF-интерполяция под различными средствами просмотра PDF - PullRequest
0 голосов
/ 21 января 2019

Я создаю два графика Python (версия 2.7.15) с imshow (matplotlib 2.2.3), один с interpolation='none', один с 'interpolation'='nearest', см. Код ниже. Файл 'none' pdf выглядит резким при Evince 3.20.2 (и Acrobat Reader DC 2019.010.20069), но очень размытым при Apple Previewer. PDF 'nearest' выглядит немного размытым в Evince и Apple, с пикселями, имеющими разные размеры. Создание графика rasterized=True (непосредственно в imshow) для 'none' или 'nearest' приводит к получению sth. похож на rasterized=False 'nearest'. Сохранение с dpi=1000 вместо dpi=100 не влияет на 'none' (даже при том же размере файла), но улучшает размытость 'nearest', и пиксели становятся более равными по размеру. Тем не менее 'nearest' все еще немного размыт, чем Evince 'none'.

Apple Previewer по умолчанию, кажется, использует интерполяцию 'bilinear' (по крайней мере, для 'none'), и я считаю это плохим значением по умолчанию (по сравнению с 'nearest'), тем более что вы не можете изменить его (прямо) в текущие версии. Поэтому мне нужно изменить параметры на стороне Python. Я хотел бы избежать pcolormesh для участков. Любой способ получить «идеально» четкие сгенерированные imshow pdf файлы для разных средств просмотра pdf? Можете ли вы достичь этого как-нибудь с 'none'? Это 'nearest' с высоким разрешением?

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

pdf_dpi = 100

np.random.seed(100)
a = np.random.rand(100,50)

plt.imshow(a, cmap='binary', aspect='auto', interpolation='none', origin='lower')
plt.title('imshow, interpolation: none')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_none.pdf', dpi=pdf_dpi)
plt.close()

plt.imshow(a, cmap='binary', aspect='auto', interpolation='nearest', origin='lower')
plt.title('imshow, interpolation: nearest')
plt.savefig('/home/proxauf/test_pdf_plot_interpolation/imshow_nearest.pdf', dpi=pdf_dpi)
plt.close()
...