我如何告诉 Matplotlib 创建第二个(新)图,然后再在旧图上绘制?

新手上路,请多包涵

我想绘制数据,然后创建一个新图形和 plot data2,最后回到原来的 plot 和 plot data3,有点像这样:

 import numpy as np
import matplotlib as plt

x = arange(5)
y = np.exp(5)
plt.figure()
plt.plot(x, y)

z = np.sin(x)
plt.figure()
plt.plot(x, z)

w = np.cos(x)
plt.figure("""first figure""") # Here's the part I need
plt.plot(x, w)

仅供参考 我如何告诉 matplotlib 我完成了一个情节? 做类似的事情,但不完全是!它不允许我访问原始情节。

原文由 Peter D 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 606
2 个回答

如果您发现自己经常做这样的事情,可能值得研究 matplotlib 的面向对象接口。在你的情况下:

 import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.exp(x)
fig1, ax1 = plt.subplots()
ax1.plot(x, y)
ax1.set_title("Axis 1 title")
ax1.set_xlabel("X-label for axis 1")

z = np.sin(x)
fig2, (ax2, ax3) = plt.subplots(nrows=2, ncols=1) # two axes on figure
ax2.plot(x, z)
ax3.plot(x, -z)

w = np.cos(x)
ax1.plot(x, w) # can continue plotting on the first axis

它有点冗长,但更清晰,更容易跟踪,尤其是对于多个图形,每个图形都有多个子图。

原文由 simonb 发布,翻译遵循 CC BY-SA 4.0 许可协议

当您致电 figure 时,只需对图进行编号。

 x = arange(5)
y = np.exp(5)
plt.figure(0)
plt.plot(x, y)

z = np.sin(x)
plt.figure(1)
plt.plot(x, z)

w = np.cos(x)
plt.figure(0) # Here's the part I need
plt.plot(x, w)

编辑:请注意,您可以根据需要对图进行编号(此处,从 0 开始)但是如果您在创建新图时根本没有提供数字,则会开始自动编号在 1 (根据文档为“Matlab 样式”)。

原文由 agf 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题