小编wwy*_*yws的帖子

是否可以在 Python (Spyder) 中更新内联图?

设置:Anaconda 3 (Win10 64)、Spyder 4 和 Python 3.7。IPython Graphics 设置是默认的(内联)。我仍然是 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')
Run Code Online (Sandbox Code Playgroud)

创建箱线图。现在,如果我想为绘图添加标题,代码将是

bp.set_title("This Title")
Run Code Online (Sandbox Code Playgroud)

这就是我遇到一些问题的地方。如果我一起运行整个块

df = pd.DataFrame(np.random.randint(0,100,size=(100, 1)), columns=list('A'))
bp = df.boxplot(column = 'A')
bp.set_title("This Title")
Run Code Online (Sandbox Code Playgroud)

然后我得到一个以“This Title”为标题的箱线图,显示在绘图窗格中, 这就是我想要的。

但是,如果我在 IPython 控制台中逐行运行上述代码,第二行将按预期生成箱线图,但第三行不会对绘图窗格中的图像产生影响,因此绘图窗格中的图像仍然没有标题

现在,如果我转到“工具”>“首选项”>“IPython 控制台”>“图形”并将图形后端设置为“自动”而不是默认的“内联”,那么当我在控制台中逐行运行代码时,我会得到一个在另一个窗口中弹出的图像,并且它确实根据输入到控制台的新行进行更新/刷新。我知道内联图应该是静态的,但我想我看到了另一篇文章,有人说可以更新内联图?所以现在我的问题是:

  1. 如果图形后端不是像内联那样静态的,绘图是否仅通过 IPython 控制台中的行代码更新/刷新?
  2. 为什么当我运行代码块和逐行运行时得到不同的结果?
  3. 如果可以更新内嵌图(最好是在 Spyder 的绘图窗格中),你会如何做?我尝试了各种方法来重绘绘图,例如
plt.show()
plt.draw()
bp.get_figure().canvas.draw()
Run Code Online (Sandbox Code Playgroud)

但这些都不会更新绘图窗格中的图像。我认为即使我无法 …

matplotlib ipython python-3.x spyder

6
推荐指数
1
解决办法
2606
查看次数

标签 统计

ipython ×1

matplotlib ×1

python-3.x ×1

spyder ×1