我正在使用Enthought Canopy和PyLab(64位)。对于我的报告,我需要使用Latex(XeLaTex),并且使用matplotlib完成绘图。
首先想到我刚从http://matplotlib.org/users/usetex.html复制了第二个例子并进行了编译。它看起来很好,我可以保存它作为一个正常的png没有问题。但是,如果我尝试将其保存为.eps或.ps它不起作用并出现错误:
基数为10的int()的文字无效:“
另外在Pylab shell中显示:
'gswin32c'未被识别为内部或外部命令,可操作程序或批处理文件'。
如果我把它保存为.pdf我没有问题,除了文字全是黑色而不是红色和蓝色。这是一个问题,因为在我的情节中我有两个轴,我需要将它们着色以提高可读性。
如果我尝试删除给定示例中的某些行(所有文本),我仍然无法将其保存为.eps和.ps。我无法弄清楚问题,所有与此相关的其他主题都没有给我一个洞察力。所以我真的需要你的帮助,因为我不能使用.png作为我的报告。
提前谢谢!!!
答案 0 :(得分:2)
我终于设法解决了这个问题。它可能看起来很奇怪,但也许其他人可以从中受益。
解决方案可能取决于您使用的软件。我在W8 64bit下使用了Enthought Canopy(Python)和MikTeX 2.9。 如果您想使用'text.usetex':True选项输出带有matplotlib的.ps和.eps文件,那么您将遇到上面发布的问题。
解决方案:
然后我能够将数字保存为.ps并且不再有任何错误消息。请记住使用{postscript options'下http://matplotlib.org/users/usetex.html上建议的设置。 在我自己中使用了以下设置:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib as mpl
mpl.rc('font', **{'family':'serif', 'serif':['Computer Modern Roman'],
'monospace':['Computer Modern Typewriter']})
params = {'backend': 'ps',
'text.latex.preamble': [r"\usepackage{upgreek}",
r"\usepackage{siunitx}",
r"\usepackage{amsmath}",
r"\usepackage{amstext}",],
'axes.labelsize': 18,
#'axes.linewidth': 1,
#'text.fontsize':17,
'legend.fontsize': 10,
'xtick.labelsize': 13,
#'xtick.major.width' : 0.75,
'ytick.labelsize': 13,
'figure.figsize': [8.8,6.8],
#'figure.dpi': 120,
'text.usetex': True,
'axes.unicode_minus': True,
'ps.usedistiller' : 'xpdf'}
mpl.rcParams.update(params)
mpl.rcParams.update({'figure.autolayout':True})
(而许多参数仅仅是为了我自己的目的而在图中)
作为一名初学者,如果您从python控制台运行脚本,我并不了解所使用的'后端'的依赖性。然而我之前没有使用任何--pylab设置就使用了这个,如果他已经在具有特定matplotlib后端的控制台中工作,我不知道是否需要手动切换后端。
答案 1 :(得分:0)
我有同样的问题,我的问题是python代码中的字体调整:
from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('text', usetex=True)
当我删除这个iit工作正常,现在我可以保存eps。 因此,请确保任何最短的工作示例对您有效,然后检查代码中的字体和其他样式编辑。这可能有所帮助。