python - 创建和引用单独的 matplotlib 图

标签 python matplotlib plot

使用 matplotlib 创建多个独立绘图的最佳做法是什么,以便稍后调用它们或输出到 pdf 报告中?我不太清楚如何以一种将每个图保留在内存中的方式(就像我们可以使用数据帧一样)以供以后引用。

假设我们有这样的代码:

%pylab inline
x1 = np.random.randn(50)*100
y1 = np.random.randn(50)*100
x2 = np.random.randn(50)*100
y2 = np.random.randn(50)*100

目的是创建 2 个独立的 (x1,y1) 和 (x2,y2) 绘图,并以某种方式“保存”它们以备后用。目的是能够将这些输出为 PDF(可能通过 reportlab)。 “图形”、“子图”和“轴”之间的关系让我感到困惑,并且不确定什么是最佳的。我从这样的方法开始:

plt.figure(1, figsize=(8, 6))
plt.subplot(211)
plt.scatter(x1, y1, c = 'r', alpha = 0.3)

plt.subplot(212)
plt.scatter(x2, y2, c = 'k', alpha = 0.7)
plt.show()

这在技术上确实有效,但我不确定以后如何引用这些内容。另外,我在这里使用一个小例子来说明,但实际上我可能有更多这样的例子。

最佳答案

通过问题使用的隐式样式(图形对象保存在变量中,并且绘图命令应用于当前图形),您可以轻松地使以前的图形成为当前图形图:

plt.figure(1)

因此将重新激活图 1。然后可以使用 plt.savefig(),可以在其中制作其他绘图等。

另外,你还可以在创建的时候给你的图起个名字,然后引用它:

plt.figure("growth", figsize=…)
…
plt.figure("counts", figsize=…)
…
plt.figure("growth")  # This figure becomes the active one again

(图形引用参数称为 num,但它不一定是数字和 can be a string,这样代码更清晰)。

关于python - 创建和引用单独的 matplotlib 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923911/

相关文章:

python - 如何设置seaborn箱线图的y轴范围?

python - 让 PyQt4 在按下按钮时打开另一个 Qt 窗口

python - Matplotlib 缩放时绘图分辨率不佳

python - seaborn FacetGrid 图中时间数据的设置

python - 在 sklearn 管道中使用 spacy 作为分词器

python - 在点击命令之上装饰

python - 为什么我的 PyDev 无法导入 mpl_toolkits?

matlab - 如何在 MATLAB 或 Octave 中在 x 轴上绘制日期时间

python - 如何在networkx中正确定位网络边缘标签?

Python - 将字符串映射到 boolean 数组