我想用matplotlib生成矢量圖。我努力嘗試 - 但輸出是一個光柵圖像。下面是我用什麼:matplotlib:生成矢量圖
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
最後:
myfig.savefig('myfig.eps', format='eps')
我發現,出口ps
給人一種矢量圖像,但eps
問題仍然存在。
我想用matplotlib生成矢量圖。我努力嘗試 - 但輸出是一個光柵圖像。下面是我用什麼:matplotlib:生成矢量圖
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
最後:
myfig.savefig('myfig.eps', format='eps')
我發現,出口ps
給人一種矢量圖像,但eps
問題仍然存在。
嘗試導出爲pdf或svg,如http://neuroscience.telenczuk.pl/?p=331 中所述如果您需要eps格式,pdf2ps命令的效果很好。
我使用下面的代碼:
from matplotlib import pyplot as plt
fig, ax = plt.subplots() # or
fig.savefig('filename.eps', format='eps')
如果需要EMF文件輸出格式,例如插入優質地塊到MS Word/PowerPoint和您願意使用Inkscape中的轉換器可以應用該解決方案:
from matplotlib import pyplot as plt
import subprocess, os
def plot_as_emf(figure, **kwargs):
inkscape_path = kwargs.get('inkscape', "C://Program Files//Inkscape//inkscape.exe")
filepath = kwargs.get('filename', None)
if filepath is not None:
path, filename = os.path.split(filepath)
filename, extension = os.path.splitext(filename)
svg_filepath = os.path.join(path, filename+'.svg')
emf_filepath = os.path.join(path, filename+'.emf')
figure.savefig(svg_filepath, format='svg')
subprocess.call([inkscape_path, svg_filepath, '--export-emf', emf_filepath])
os.remove(svg_filepath)
爲了測試這個功能,你可以運行一個簡單的例子:
plt.plot([1,2], [4,5])
fig = plt.gcf()
plot_as_emf(fig, filename="C:/test.emf")
你可以舉一個例子(如果你需要補充一些數據)實際調用'plt'嗎?這將有助於他人的貢獻。 – Yann 2012-02-13 18:59:31
我相信你所描述的問題並不像你所建議的那樣,而且eps輸出真的是一個完全成熟的矢量翻譯。這可能是因爲你正在通過一個可憐的查看器查看eps - 你使用哪個應用程序查看eps? – pelson 2012-07-17 10:15:29
'plt.savefig('some_name.eps',bbox_inches ='tight')'在我的系統上產生一個向量化圖。 – mab 2015-10-21 15:17:01