wwy*_*yws 6 matplotlib ipython python-3.x 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 控制台”>“图形”并将图形后端设置为“自动”而不是默认的“内联”,那么当我在控制台中逐行运行代码时,我会得到一个在另一个窗口中弹出的图像,并且它确实根据输入到控制台的新行进行更新/刷新。我知道内联图应该是静态的,但我想我看到了另一篇文章,有人说可以更新内联图?所以现在我的问题是:
plt.show()
plt.draw()
bp.get_figure().canvas.draw()
Run Code Online (Sandbox Code Playgroud)
但这些都不会更新绘图窗格中的图像。我认为即使我无法更新图像,我至少应该能够重新绘制它(即第二个图像出现在具有更新特征的绘图窗格中)。但到目前为止我所尝试的一切都不起作用。请指教并再次感谢。
(此处为 Spyder 维护者)关于您的问题:
如果图形后端不是像内联那样静态的,绘图是否仅通过 IPython 控制台中的行代码更新/刷新?
正确的。
为什么当我运行代码块和逐行运行时得到不同的结果?
因为当您运行代码单元格(这就是我认为您所说的“代码块”的意思)时,您的绘图显示在该代码的末尾,因此它需要您在中间行中对其进行的所有修改。
如果可以更新内嵌图(最好是在 Spyder 的绘图窗格中),你会如何做?
不,这是不可能的。正如您上面正确提到的,内联图是静态图像,因此无法修改。
| 归档时间: |
|
| 查看次数: |
2606 次 |
| 最近记录: |