Python Matplotlib savefig to eps忽略可见性=False

Python Matplotlib savefig to eps忽略可见性=False,python,matplotlib,eps,Python,Matplotlib,Eps,我正在尝试将流线型绘图保存为EPS,然后使用epstopdf将其转换为PDF,因为这样可以获得更小的文件大小 我使用多个子地块共享其x轴和y轴。我添加了一个子图,这样我就可以轻松地添加一个xlabel和ylabel。我将frameon设置为False,因此它不会出现。之后,我设置了这个轴的刺和刻度。当图形显示时,我从大轴上看不到任何东西。到目前为止,一切顺利 当我保存图形时会出现问题。保存到EPS然后转换为PDF会使标签出现,并干扰我的文本。完全删除标签也是不好的,因为间距会将标签放置在我确实希

我正在尝试将流线型绘图保存为EPS,然后使用epstopdf将其转换为PDF,因为这样可以获得更小的文件大小

我使用多个子地块共享其x轴和y轴。我添加了一个子图,这样我就可以轻松地添加一个xlabel和ylabel。我将frameon设置为False,因此它不会出现。之后,我设置了这个轴的刺和刻度。当图形显示时,我从大轴上看不到任何东西。到目前为止,一切顺利

当我保存图形时会出现问题。保存到EPS然后转换为PDF会使标签出现,并干扰我的文本。完全删除标签也是不好的,因为间距会将标签放置在我确实希望看到的图的标签之间。奇怪的是,保存为pdf没有这个问题,但是文件大小是pdf的11倍

有人知道我做错了什么,或者发生了什么吗

工作示例:

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

fig, ax = plt.subplots(2, 2, sharex=True, sharey=True)
ax = ax.flatten()
ax = np.append(ax, fig.add_subplot(1, 1, 1, frameon=False))
ax[-1].spines['top'].set_color('none')
ax[-1].spines['bottom'].set_color('none')
ax[-1].spines['left'].set_color('none')
ax[-1].spines['right'].set_color('none')
ax[-1].tick_params(
    labelcolor='none', top='off', bottom='off', left='off', right='off')
ax[-1].set_xlabel('$u$', fontsize=14)
ax[-1].set_ylabel('$v$', fontsize=14)
plt.setp(ax[-1].get_xticklabels(), visible=False)

fig.savefig('TestPdf.pdf')
fig.savefig('TestEps.eps')
subprocess.check_call(['epstopdf', 'TestEps.eps'])
plt.show()

你可以试试其他的后端。例如,pgf后端(matplotlib 1.3+中提供)也能够生成pdf:

import matplotlib
matplotlib.use("pgf")
您可以通过以下方式获得可用的后端列表:

matplotlib.rcsetup.all_backends
您可以通过以下方式检查wither后端支持eps或pdf:

import matplotlib
matplotlib.use("BACKEND")
import matplotlib.pyplot as plt
fig = plt.figure()
print fig.canvas.get_supported_filetypes()

强烈怀疑这是同一个问题我没有发现这个问题,但它确实似乎是相关的。我尝试了所有可用的后端,都出现了相同的问题:EPS只是不能正确显示轴。但是如果您的最终目标是pdf,那么您为什么需要EPS呢?如果直接生成的pdf大于使用eps生成的pdf,则仅表示您应该压缩直接生成的pdf,例如使用gs:
gs-dBATCH-dNOPAUSE-q-sDEVICE=pdfwrite-sOutputFile=“Compressed.pdf”“Original.pdf”