不同pdf查看器下的Python pdf插值

时间:2019-01-21 09:59:44

标签: python pdf matplotlib interpolation pdf-viewer

我用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=Trueimshow创建'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()

0 个答案:

没有答案