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}