我已使用以下方法在整个熊猫数据框df
上创建了子图
plots = df.plot(subplot=True, layout=(2,3))
在此之后,我将在Spyder的单独窗口中获得绘图。
但是,如果我关闭此窗口并想再次显示图,则无法执行。由于plots.show()
被创建为numpy数组,因此plots
不起作用。我查看了另外两个类似的帖子,但无法弄清楚。
1. Matplotlib: how to show plot again?
2. matplotlib show figure again
答案 0 :(得分:2)
创建一个单独的图形和轴对象,并将轴传递到pandas.plot
。这样可以使图形保持打开状态而不会阻塞代码。我喜欢这样,因为我可以更新图形并使用fig.canvas.draw
后跟fig.show
来显示更新。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({x: range(5) for x in 'abcdef'})
fig, ax = plt.subplots()
df.plot(ax=ax, subplots=True, layout=(2,3))
fig.show()
然后,如果您关闭图形窗口,则可以通过再次调用fig.show
将其恢复。您也可以像我之前提到的那样修改单个子图。
plots[0,0].axhline(3)
fig.canvas.draw()
fig.show()