Matplotlib 动画未显示

2024-05-02

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

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

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

首先,使用符合您的最佳利益虚拟环境 http://python-guide-pt-br.readthedocs.io/en/latest/dev/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() with plt.savefig('numbers.png')并查看图形是否成功保存。如果是这样的话,那么 matplotlib 的交互性就会出现一些问题。如果您看不到名为numbers.png,那么可能 matplotlib 的安装总体上有问题,而不仅仅是动画部分。或者也许安装 matplotlib 依赖的某些软件包,例如 Tkinter。

我不会进一步讨论假设场景,而是在此停下来等待更多细节。

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

如何在 Python 中设置 matplotlib 中的“后端”? https://stackoverflow.com/questions/4930524/how-can-i-set-the-backend-in-matplotlib-in-python

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib 动画未显示 的相关文章

随机推荐