Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Jupyter笔记本显示和保存PGF绘图_Python_Matplotlib_Jupyter Notebook_Latex_Pgf - Fatal编程技术网

Python 从Jupyter笔记本显示和保存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

我准备了一个带有许多matplotlib图的Jupyter笔记本。现在我想将绘图保存为PGF格式,以便在LaTeX中重用它们。我一直遵循这一理念来实施这一理念

不幸的是,如果我将matplotlib配置为生成PGF文件,它们不会显示在笔记本中。如果禁用matplotlib以生成PGF文件,则会显示绘图,但不会生成PGF文件。我怎么能两者兼得呢

下面是重现问题的最小示例:

# 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。案例在我的案例中,我在注释中描述了两件有帮助的事情: