【问题标题】:Is it possible to update inline plots in Python (Spyder)?是否可以在 Python (Spyder) 中更新内联图?
【发布时间】: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 控制台 > 图形并将图形后端设置为自动而不是默认的内联,那么当我在控制台中逐行运行代码时,我会得到一个弹出的图像在另一个窗口中,并且它确实根据输入到控制台的新行进行更新/刷新。我知道内联图应该是静态的,但我想我看到另一篇帖子有人说可以更新内联图?所以现在我的问题是:

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

但这些都不会更新绘图窗格中的图像。我想即使我不能更新图像,我至少应该能够重绘它(即第二张图像出现在具有更新特征的绘图窗格中)。但到目前为止,我没有尝试过任何工作。请指教,再次感谢。

【问题讨论】:

    标签: python-3.x matplotlib ipython spyder


    【解决方案1】:

    这里是 Spyder 维护者)关于您的问题:

    如果图形后端不像内联那样静态,是否仅通过 IPython 控制台中的行代码更新/刷新绘图?

    正确。

    为什么我在逐行运行代码块时会得到不同的结果?

    因为当您运行代码单元(我认为您的意思是“代码块”)时,您的绘图会显示在该代码的末尾,因此它需要您在中间行中对其进行的所有修改。

    如果可以更新内联图(最好在 Spyder 的绘图窗格中),你是怎么做的?

    不,这是不可能的。正如您在上面正确提到的,内联图是静态图像,因此无法修改。

    【讨论】:

    • 非常感谢您的回复。虽然无法更新原始的内联图,但有没有办法在设置标题后重新绘制内联图?
    • 不,任何附加命令(如设置标题)都会生成一个新的内联图。
    • 这就是我的意思——生成一个新的内联图。更新标题后,我使用什么命令来绘制新图?做 plt.draw() 或 bp.get_figure().canvas.draw() 似乎对我不起作用。
    • 没有命令可以做到这一点。您需要在单个文件或单元运行中完成所有操作。
    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 2017-04-16
    • 2019-02-06
    • 2018-06-28
    • 1970-01-01
    • 2013-03-29
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多