当前位置: 首页 > 面试题库 >

Matplotlib的“交互模式”(ion(),ioff())的确切语义?

呼延臻
2023-03-14
问题内容

Matplotlib的pyplot中的“​​交互模式”文档如下:

pyplot界面的交互属性控制是否在每个pyplot命令上绘制图形画布。如果interactive为False,则在每个绘图命令上都会更新图形状态,但只会在显式调用draw()时绘制图形状态。当Interactive为True时,每个pyplot命令都会触发一次绘制。

这似乎很清楚:启用交互模式后,plot()无需执行即可执行操作draw()。但是,在以下代码中执行draw()不会执行任何操作:

from matplotlib import pyplot as pp

# Interactive mode is off by default

pp.plot([10, 20, 50])
pp.draw()

raw_input('Press enter...')  # No graph displayed?!!

(在Windows XP上为Matplotlib 1.0.1)。

ion()在开始处添加使图形出现,同时等待用户键入enter(方便地关闭所有图形):

from matplotlib import pyplot as pp

ion()

pp.plot([10, 20, 50])  # No draw() is necessary

raw_input('Press enter...')  # The graph is interactive *and* the terminal responds to enter

因此,看起来ion()确实
不是每个绘图命令后,只是增加自动图表更新,可惜我不能找到文档中任何事情。后一个程序的另一个更重要的问题是,ion()使所有绘图命令都更新图形,当单个图形被多次更新时,这很耗时。

因此,有没有一种方法:

  • 让终端机等待输入,然后自动关闭所有图形,
  • 具有交互式Matplotlib图,
  • …无需在开始时强制启用交互模式(以免强制自动更新图表,这可能很耗时)?

问题答案:

这是Matplotlib邮件列表中有关此主题的有趣讨论的摘要。执行摘要是:

  • 互动模式(通过激活ion())使许多事情自动化。特别是,pyplot.*命令会在屏幕上自动更新相关轴。但是,对Matplotlib对象ax.plot()(例如(ax是Axes对象))的方法调用通常不会执行自动更新。在这种情况下,请pyplot.draw()执行必要的更新。)

  • 非交互模式不太方便。 draw()通常 不会 更新屏幕上的数字。draw()当前文档中未提及在非交互模式下有些“不活跃”的事实,但希望很快会被包含在其中。

同时,可以在Matplotlib的当前分支中找到有关交互和非交互模式的更多信息。一个更好的文档的draw()show()朋友们也可以在同一分支中。



 类似资料:
  • 问题内容: 就我而言,每次只想拖一个点。但是,由于两个点严重重叠,因此拖动一个点将导致另一个点被拖动。我如何只拖动上面的点?谢谢! 问题答案: Joe的方法工作正常,但是它使一组可拖动点作为一个类,而不是单个可拖动点类。我只是遇到了一种使用动画blit技术解决上述问题的替代方法。它不仅使拖动更快,更流畅,而且只能拖动一个点。请参阅以下代码。

  • 问题内容: 我正在尝试弹出一个图,以便用户可以确认拟合是否起作用,但不会挂断这样做的整个过程。但是,当窗口出现时,窗口中什么也没有,它是“无响应”。我怀疑与子流程功能之间的交互不良,因为此代码是前端代码,并且数据的处理都在C ++中运行。 下列子过程确实打开。如果我删除呼叫并使用,则绘图可以正常工作,但是整个过程将一直持续到关闭窗口。当用户查看图形时,我需要继续执行该过程。有没有办法做到这一点?

  • 1.1.1. 语音识别 WebSocket 接口定义文档 1.1.2. 概述 1.1.3. 协议详解 1.1.4. 服务地址 1.1.5. 协议地址 1.1.6. 协议概述 1.1.7. 典型场景 1.1.8. speech异常 1.1.9. speech 特殊逻辑 1.1.1. 语音识别 WebSocket 接口定义文档 1.1.2. 概述 本文档目的是描述云端语音接口的 WebSocket 版

  • YodaOS Event Event rokid.turen.start_voice 表示语音请求开始,参数描述如下: 参数名称 类型 描述 trigger int 唤醒词 triggerStart int 唤醒词在语音流的开始偏移量 triggerLength int 唤醒词语音流长度(按采样点计算) soundIntensity float 音强 enableCloudVerification

  • 原文:Using matplotlib in a python shell 警告 该页面的内容已严重过时。 默认情况下,matplotlib 将绘图延迟到脚本结束,因为绘图可能是开销大的操作,并且你可能不想在每次更改单个属性时更新绘图,而是只在所有属性更改后更新一次。 但是在 python shell 中工作时,通常需要用每个命令更新绘图,例如,在更改xlabel()或一行的标记样式之后。 虽然这

  • 原文:Interactive navigation 所有图形窗口都带有导航工具栏,可用于浏览数据集。 以下是工具栏底部的每个按钮的说明: Home(首页)、Forward(前进)和Back(后退)按钮: 这些类似于 Web 浏览器的前进和后退按钮。 它们用于在之前定义的视图之间来回浏览。 它们没有意义,除非你已经使用平移和缩放按钮访问了其他地方。 这类似于尝试在访问新页面之前单击 Web 浏览器上