相关疑难解决方法(0)

python 2中的pylab.ion(),matplotlib 1.1.1并在程序运行时更新绘图

我想要做的是让脚本计算一些东西,准备一个绘图并将已经获得的结果显示为pylab.figure - 在python 2(特别是python 2.7)中使用稳定的matplotlib(1.1.1).

在python 3(带有matplotlib git build ...版本1.2.x的python 3.2.3)中,这很好用.作为一个简单的例子(通过time.sleep()模拟冗长的计算)考虑

import pylab
import time
import random

dat=[0,1]
pylab.plot(dat)
pylab.ion()
pylab.draw()    
for i in range (18):
    dat.append(random.uniform(0,1))
    pylab.plot(dat)
    pylab.draw()
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

在python 2(版本2.7.3 vith matplotlib 1.1.1)中,代码运行干净而没有错误,但没有显示图.使用python2解释器进行一些试验和错误似乎建议用pylab.show()替换pylab.draw(); 这样做一次显然是足够的(不是,就像在绘图中每次更改/添加之后调用它一样).因此:

import pylab
import time
import random

dat=[0,1]
pylab.plot(dat)
pylab.ion()
pylab.show()    
for i in range (18):
    dat.append(random.uniform(0,1))
    pylab.plot(dat)
    #pylab.draw()
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

但是,这也不起作用.它再次运行干净,但没有显示数字.它似乎只在等待用户输入时这样做.我不清楚为什么会这样,但是当将raw_input()添加到循环中时,最终会显示该图

import pylab
import time
import random

dat=[0,1]
pylab.plot(dat)
pylab.ion()
pylab.show()    
for i in range (18):
    dat.append(random.uniform(0,1))
    pylab.plot(dat)
    #pylab.draw()
    time.sleep(1)
    raw_input()
Run Code Online (Sandbox Code Playgroud)

有了这个,脚本当然会在显示情节时等待用户输入,并且在用户点击进入之前不会继续计算数据.当然,这不是意图.

这可能是由不同版本的matplotlib(1.1.1和1.2.x)或不同的python版本(2.7.3和3.2.3)引起的.

有没有办法用python 2和一个稳定的(1.1.1)matplotlib完成上面的脚本(第一个)在python …

python matplotlib

22
推荐指数
1
解决办法
3万
查看次数

绘制线条而不阻止执行

我使用matplotlib绘制图表和图形.

当我使用命令绘制图表时,show()我的代码会阻止此命令.

我想用新数据刷新我的值列表,然后刷新背景图像.如何在没有每次关闭窗口的情况下关闭图表?以下是我正在使用的代码

import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
Run Code Online (Sandbox Code Playgroud)

python matplotlib

16
推荐指数
1
解决办法
1万
查看次数

Matplotlib动画要么在几帧后冻结,要么就是不起作用

我一直在努力让这个简单的脚本工作,但我所做的一切似乎都没有帮助.这是对Matplotlib网站上最基本的动画情节示例代码的略微修改,应该只显示几帧噪音(我的网站BTW的未经修改的代码也有同样的问题).

在我的带有TkAgg后端的计算机上,在绘图窗口冻结之前,我得到大约20帧(60个).使用Qt4Agg,我只得到一个冷冻的黑色窗口,并且根本没有绘制帧.我尝试过不同的NumPy,PyQt,Python和Matplotlib版本的多种组合,但总能得到相同的结果.

如果这对你有用或者看错了,请告诉我.我很确定这在过去确实有效,所以我认为这可能是Windows问题或与之相关的问题ion().

仅供参考我正在使用Windows 7(32位),我已经使用Python 2.6/2.7,MPL 1.0.0/0.9.9.8,PyQt 4.6/4.7,Numpy 1.4/1.5b进行了测试.

import matplotlib
matplotlib.use('TkAgg') # Qt4Agg gives an empty, black window
from pylab import *
import time

ion()
hold(False)

# create initial plot
z = zeros(10)
line, = plot(z)
ylim(-3, 3)

for i in range(60):
    print 'frame:', i

    d = randn(10)
    line.set_ydata(d)

    draw()
    time.sleep(10e-3)
Run Code Online (Sandbox Code Playgroud)

这个更简单的版本在前几帧之后也会冻结:

from pylab import *

ion()
hold(False)

for i in range(40):
    plot(randn(10))
    draw()

show()
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:这些人似乎和我有相同或类似的问题:

  • mail-archive.com/matplotlib-users@lists.sourceforge.net/msg10844.html
  • stackoverflow.com/questions/2604119/matplotlib-pyplot-pylab-not-updating-figure-while-isinteractive-using-ipython
  • mail-archive.com/matplotlib-users@lists.sourceforge.net/msg01283.html

看起来他们中的任何一个都不能解决它:(

python animation numpy pyqt matplotlib

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

标签 统计

matplotlib ×3

python ×3

animation ×1

numpy ×1

pyqt ×1