Matplotlib动画没有显示

时间:2017-06-19 16:59:24

标签: python animation matplotlib

当我在家里的电脑上试用它时,它可以工作,但不能在我的电脑上工作。这是代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import sys
import multiprocessing


def update_line(num, gen, line):
    data = gen.vals_queue.get()
    data = np.array(data)
    line.set_data(data[..., :num])
    return line,


class Generator(multiprocessing.Process):
    def __init__(self):
        self.vals = [[], []]
        super(Generator, self).__init__()
        self.vals_queue = multiprocessing.Queue()

    def run(self):
        while True:
            self.vals[0].append(np.random.rand())
            self.vals[1].append(np.random.rand())
            self.vals_queue.put(self.vals)


if __name__ == '__main__':
    gen = Generator()
    gen.start()
    fig1 = plt.figure()
    l, = plt.plot([], [], 'r-')
    plt.xlim(0, 1)
    plt.ylim(0, 1)
    plt.xlabel('x')
    plt.title('test')
    print 11111111111111
    sys.stdout.flush()
    line_ani = animation.FuncAnimation(fig1, update_line, frames=None, fargs=(gen, l),
                                       interval=50, blit=True, repeat=False)
    print 222222222222222222222222
    sys.stdout.flush()
    plt.show()
    print 3333333333333333333333333
    sys.stdout.flush()

我看到的输出是

11111111111111
222222222222222222222222
3333333333333333333333333

应用程序没有退出,只是挂起,但没有弹出数字。我从Linux终端运行它。我的matplotlib版本是matplotlib-2.0.0-1.x86_64

另外,我已经开始工作了(有问题的)

CentOS Linux release 7.2.1511 (Core) 
echo $SHELL
/bin/bash
echo $BASH_VERSION
4.2.46(1)-release
Python 2.7.12

2 个答案:

答案 0 :(得分:5)

重现这个问题真的很难,所以我会尝试提供一些一般性的建议并尝试猜测问题的实际根源。

首先,如果您尚未使用virtualenvs,则最符合您的利益。您的项目中将有一个requirements.txt文件,并将要求从您的家用计算机(有效的)冻结到requirements.txt,然后在工作的计算机上创建一个新的virtualenv最后安装要求。这样,您就可以确保两台计算机上的所有软件包都具有相同版本。

之后你应该试试看它是否有效。如果它没有尝试这些东西并提供更多细节:

  1. 在工作中的计算机上运行时,您是否看到任何错误或警告?
  2. 您可以使用matplotlib做非常基本的情节吗?像这样:

    import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') plt.show()

  3. 如果2中的示例不起作用,请尝试将plt.show()替换为plt.savefig('numbers.png'),并查看该数字是否已成功保存。如果是这样,那么你在matplotlib的交互性方面遇到了一些问题。如果您看不到名为numbers.png的文件,那么matplotlib的安装可能会出现问题,而不仅仅是动画部分。或者也许安装一些matplotlib包依赖,比如Tkinter。

  4. 我没有进入更进一步的假设情景,而是停在这里等待更多细节。

    P.S。如果在窗口中显示生成的绘图/动画有问题,您可能会发现有用的链接:

    How can I set the 'backend' in matplotlib in Python?

    http://matplotlib.org/faq/usage_faq.html#what-is-a-backend

答案 1 :(得分:0)

库似乎暴露在某些更改中,或者未正确安装。只需更新库,如下所示

对于Ubuntu / Debian OS,打开终端并输入:

                    sudo apt-get install python-matplotlib

对于Windows打开命令行并键入:

                    python -m pip install -U pip setuptools
                    python -m pip install matplotlib

看看是否有效。

来源:https://matplotlib.org/users/installing.html