Я создаю два графика 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()