我用imshow
(matplotlib 2.2.3)创建了两个python(版本2.7.15)图,一个是interpolation='none'
,一个是'interpolation'='nearest'
,请参见下面的代码。 'none'
pdf文件在Evince 3.20.2
(和Acrobat Reader DC 2019.010.20069)下显得清晰,但Apple Previewer
却非常模糊。 'nearest'
pdf在Evince和Apple下显得有些模糊,像素大小不同。为rasterized=True
或imshow
创建'none'
图(直接在'nearest'
中)会产生某事。与rasterized=False 'nearest'
类似。使用dpi=1000
而不是dpi=100
进行保存不会影响'none'
(即使文件大小相同),但可以改善'nearest'
的模糊性,并且像素大小变得更均等。尽管如此,'nearest'
仍然比Evince 'none'
还要模糊。
默认情况下,Apple Previewer似乎使用'bilinear'
插值(至少对于“ none”而言),我认为它是一个糟糕的默认值(与'nearest'
相比),尤其是因为您无法更改它(直接)在当前版本中。所以我需要在python端更改参数。我想避免使用pcolormesh
。有任何默认方法可为不同的pdf查看器获取“完全”清晰的imshow生成的pdf文件?您可以用'none'
以某种方式实现这一目标吗?是'nearest'
的dpi高吗?
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()