繁体   English   中英

如何在 Spyder/IPython/matplotlib 中再次获得交互式绘图?

[英]How do I get interactive plots again in Spyder/IPython/matplotlib?

我在 Windows 7 中从 Python(x,y) 2.7.2.3 升级到2.7.6.0 (很高兴看到我终于可以输入function_name?并再次在对象检查器中查看文档字符串)但现在绘图不起作用像以前一样。

以前(Spyder 2.1.9、IPython 0.10.2、matplotlib 1.2.1),例如,当我绘制此脚本时,它会在交互式窗口中并排绘制子图:

在此处输入图片说明

现在(Spyder 2.2.5,IPython 1.2.0,Matplotlib 1.3.1)当我尝试绘制事物时,它将子图作为微小的内联 PNG 执行,这是IPython 的一个变化

微小的内联 PNG

所以我进入了选项并发现了这个:

图形选项

这似乎是说我可以恢复旧的交互式绘图,并排显示 4 个子绘图,但是当我切换到“自动”并尝试绘制某些内容时,它什么也没做。 根本没有情节。

如果我将此下拉菜单切换到 Qt,或取消选中“激活支持”,它只会绘制第一个子图或其中的一部分,然后停止:

在此处输入图片说明

如何在我可以交互的单个图形中获得 4 个并排子图的旧行为?

将后端更改为自动:

工具 > 首选项 > IPython 控制台 > 图形 > 图形后端 > 后端:自动

然后关闭并打开 Spyder。

您可以通过在 Spyder 的 IPython 控制台中输入内置魔法命令来快速控制它,我发现这比从首选项菜单中选择这些命令更快。 更改立即生效,无需重新启动 Spyder 或内核。

要切换到“自动”(即交互式)绘图,请键入:

%matplotlib auto

然后,如果您想切换回“内联”,请键入:

%matplotlib inline

(注意:这些命令在非 IPython 控制台中不起作用)

查看有关此主题的更多背景信息: “%matplotlib inline”的目的

应用后:工具>首选项>图形>后端>自动只需重新启动内核在此处输入图片说明

你一定会得到交互式情节。 快乐编码!

正如评论中所说,问题在于您的脚本。 其实有2个问题:

  • 有一个 matplotlib 错误,我猜您在某处将参数作为None传递。 也许是由于 defaultdict ?
  • 在每个子图之后调用show() show()应该在脚本结束时调用一次。 另一种方法是使用交互模式,在 matplotlib 的文档中查找ion

这实际上很容易修复并且不需要任何编码:

1. 单击控制台上方的 Plots 选项卡。 2.然后在绘图屏幕的右上角单击选项按钮。 3.最后取消选中“静音内联绘图”按钮

现在重新运行您的脚本,您的图形应该会显示在控制台中。

干杯。

对于大多数数学编码,我使用这个网站和他们的服务,因为他们为每个主题提供示例,他们的支持非常有帮助:
https://labdeck.com/application-examples-screenshots/

如果您希望图形以可变数量变化,那么您要使用的代码是

   import matplotlib.pyplot as plt
   import time
   vec1=[1, 2, 3, 4, 5]
   vec2py=[10, 12, 9, 11, 13]
   plt.show()
   axes = plt.gca()
   axes.set_xlim(0, 6)
   axes.set_ylim(5, 50)
   plt.xlabel('x - axis')
   plt.ylabel('y - axis')
   plt.title('Example 1')
   plt.grid()
   line,= axes.plot(vec1,vec2py,color='red',lw=1)
   for x in range(0,10):
      vec2py = [x + 2 for x in vec2py]
      line.set_ydata(vec2py)
      plt.draw()
      plt.pause(1e-17)
      time.sleep(0.5)
   plt.show()

您必须更改 x 以表示您想要的图形迭代次数以及您希望它运行多长时间,以及 vec2py 行中的 +2 以表示您想要更改它的变量数量。 当然,代码是一个模板,您可以进行任何美学上的更改。 该代码文件位于上面链接中python编程下的显示动态图下。

如果你想显示来自源的信息的持续依赖,我不确定如何做到这一点,但之前提到的网站确实有一个例子,但它不是在 python 中,而是在 C++ 的简化形式中。如果您确实想看到它,那么链接是https://labdeck.com/examples/dsp-ecg-processing/ecg-9-leads-graphs.pdf?01a96f&01a96f及其下 ECG 9 Leads graphs in ECG on the link at开始。 图形可以在文档中显示,也可以独立于文档显示。

PS 这适用于有相同问题但不一定是相同场景的人,因为我认为这会更有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM