Python 从Jupyter笔记本显示和保存PGF绘图
我准备了一个带有许多matplotlib图的Jupyter笔记本。现在我想将绘图保存为PGF格式,以便在LaTeX中重用它们。我一直遵循这一理念来实施这一理念 不幸的是,如果我将matplotlib配置为生成PGF文件,它们不会显示在笔记本中。如果禁用matplotlib以生成PGF文件,则会显示绘图,但不会生成PGF文件。我怎么能两者兼得呢 下面是重现问题的最小示例:Python 从Jupyter笔记本显示和保存PGF绘图,python,matplotlib,jupyter-notebook,latex,pgf,Python,Matplotlib,Jupyter Notebook,Latex,Pgf,我准备了一个带有许多matplotlib图的Jupyter笔记本。现在我想将绘图保存为PGF格式,以便在LaTeX中重用它们。我一直遵循这一理念来实施这一理念 不幸的是,如果我将matplotlib配置为生成PGF文件,它们不会显示在笔记本中。如果禁用matplotlib以生成PGF文件,则会显示绘图,但不会生成PGF文件。我怎么能两者兼得呢 下面是重现问题的最小示例: # Test if integration between python and latex works fine impor
# Test if integration between python and latex works fine
import subprocess; subprocess.check_call(["latex", "-help"])
# Configure matplotlib to generate PGF files
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use("pgf")
matplotlib.rcParams.update({
"pgf.texsystem": "pdflatex",
'font.family': 'serif',
'text.usetex': True,
'pgf.rcfonts': False,
})
# Prepare simple plot
import pandas as pd
df = pd.DataFrame({
'length': [1.5, 0.5, 1.2, 0.9, 3],
'width': [0.7, 0.2, 0.15, 0.2, 1.1]
}, index= ['pig', 'rabbit', 'duck', 'chicken', 'horse'])
hist = df.hist(bins=3)
# Save the plot to PGF file
plt.savefig('histogram.pgf')
以下是matplotlib启用配置的输出<生成并保存代码>直方图.pgf文件,但不显示绘图
下面是禁用PGF的matplotlib配置的示例。显示绘图,但生成的直方图。pgf
文件为空---不包含绘图
我无法重现你的问题 我必须运行第一个单元格三到四次,否则我就看不到数字
%matplotlib内联
顺便说一句,我正在使用Ubuntu 16.04、Python 3.7.6和Matplotlib 3.1.1。你能检查一下jupyter路径上是否生成了histogram.pgf吗?如果是,您可能需要将生成的pgf文件导入latex文档,就像导入png文件一样。@JasonChia
histogram.pgf
已生成,但Jupyter笔记本中未显示绘图。我添加了一个屏幕截图。详细阅读博客文章,我认为pyplot无法以图形方式将pgf格式打印为特定于latex的格式。您能够将图形加载到latex中吗?我相信博客描述了在从latex获得线宽后调整图形的宽度和高度。这可能暗示您在使用pgf格式时无法可视化图形。也请查看此链接。如果在自己的单元格中调用了plt.something
,则默认情况下,它将不记得以前的pyplot状态。因此,与任何pgf
问题无关,可以将plt.savefig
放在创建图形的同一单元格中,或者使用fig.savefig
,其中fig
是要保存的图形。知道了这一点,也许你可以编辑这个问题来摆脱这个无关紧要的问题。@ImportanceOfBeingErnest哇!谢谢(1) 将plt.savefig
保存在创建图形的同一单元格中+(2)删除matplotlib.use(“pgf”)
和matplotlib.rcParams.update(…
行帮助。图形正确保存到PGF文件,并在LaTeX中正确呈现,尽管没有明确说明matplotlib使用PGF backend.interest。案例在我的案例中,我在注释中描述了两件有帮助的事情: