【发布时间】:2020-05-06 01:44:10
【问题描述】:
设置:Anaconda 3 (Win10 64)、Spyder 4 和 Python 3.7。 IPython 图形设置是默认设置(内联)。我仍然是 Python 新手,但我环顾四周,到目前为止还没有找到解决我问题的答案。提前谢谢大家。
所以在这个设置中,每当我使用 matplotlib 创建绘图时,它都会出现在 Spyder 的绘图窗格中。例如
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 1)), columns=list('A'))
bp = df.boxplot(column = 'A')
创建一个箱线图。现在,如果我想为情节添加标题,代码将是
bp.set_title("This Title")
这是我遇到一些问题的地方。如果我一起运行整个块
df = pd.DataFrame(np.random.randint(0,100,size=(100, 1)), columns=list('A'))
bp = df.boxplot(column = 'A')
bp.set_title("This Title")
然后我得到一个以“This Title”为标题的箱形图,显示在绘图窗格中, which is what I want.
但是,如果我在 IPython 控制台中逐行运行上述代码,第 2 行将按预期生成箱线图,但第 3 行不会对绘图窗格中的图像产生影响,所以the image in the plot pane still do not have a title
现在,如果我转到工具 > 首选项 >IPython 控制台 > 图形并将图形后端设置为自动而不是默认的内联,那么当我在控制台中逐行运行代码时,我会得到一个弹出的图像在另一个窗口中,并且它确实根据输入到控制台的新行进行更新/刷新。我知道内联图应该是静态的,但我想我看到另一篇帖子有人说可以更新内联图?所以现在我的问题是:
- 如果图形后端不是像内联那样静态,是否仅通过 IPython 控制台中的行代码更新/刷新绘图?
- 为什么我在逐行运行代码块时得到不同的结果?
- 如果可以更新内联图(最好在 Spyder 的绘图窗格中),您是如何做到的?我尝试了各种方法来重绘绘图,例如
plt.show()
plt.draw()
bp.get_figure().canvas.draw()
但这些都不会更新绘图窗格中的图像。我想即使我不能更新图像,我至少应该能够重绘它(即第二张图像出现在具有更新特征的绘图窗格中)。但到目前为止,我没有尝试过任何工作。请指教,再次感谢。
【问题讨论】:
标签: python-3.x matplotlib ipython spyder