将 matplotlib 图与 pgfplots 集成时如何删除边距?

将 matplotlib 图与 pgfplots 集成时如何删除边距?

Python 绘图库 matplotlib 默认会为其生成的任何绘图添加边距。可以通过 的一些选项(savefig()bbox_inches='tight'和)在一定程度上减少边距pad_inches=0。但即使使用这些选项,一些边距仍会保留。

如果要将 matplotlib 生成的图与 pgfplots 和该功能结合使用addplot graphics,则这些边距需要是可预测的(理想情况下不存在)。

:如何才能彻底消除这些边距?

答案1

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y = np.sin(x)

fig = plt.figure(figsize=(8,5))
ax = plt.gca()
plt.axis('off')
plt.plot(x, y)
plt.xlim(0,10)
plt.ylim(-1,1)

plt.subplots_adjust(left=0, right=1, top=1, bottom=0)
plt.savefig('out.pdf')

无边距绘图

这将生成一个完全没有边距的正弦图。然后可以将生成的 pdf 集成到 pgfplots 图中,如下所示:

\documentclass{scrartcl}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    axis on top,
    plot graphics/xmin=0,
    plot graphics/xmax=10,
    plot graphics/ymin=-1,
    plot graphics/ymax=1,
    enlargelimits=false]
    \addplot graphics {out};
  \end{axis}
\end{tikzpicture}
\end{document}

相关内容