首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib.pyplot 2.0.0在运行时显示空图

matplotlib.pyplot 2.0.0在运行时显示空图
EN

Stack Overflow用户
提问于 2017-01-18 21:19:27
回答 1查看 1.6K关注 0票数 0

最小示例:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import time
import numpy as np

plt.ion()

def plot(array):
    plt.figure()
    plt.plot(array)
    plt.show()

for i in range(5):
    plot(np.linspace(-10.*i, 10*i, num=101))

time.sleep(15)

这将创建5个绘图,然后等待15秒直到终止。绘图窗口出现,但在这15秒内,您可以看到绘图窗口的边框,但内容是透明的(您可以看到下面其他窗口的内容;见附图)。这发生在升级到matplotlib版本2.0.0之后。

我希望绘图在程序终止之前是可见的,这在以前是可能的(至少在spyder IDE的ipython控制台中是可能的)。我需要调整什么?

Screenshot of transparent plot windows

编辑:

Python 2.7.12

matplotlib 2.0.0

ipython: 5.1.0

EN

回答 1

Stack Overflow用户

发布于 2017-01-18 22:28:49

如果您使用交互模式,则应使用plt.pause而不是time.sleep。下面的方法对我很有效,

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np

plt.ion()

def plot(array):
    plt.figure()
    plt.plot(array)
    plt.show()


for i in range(5):
    plot(np.linspace(-10.*i, 10*i, num=101))

plt.pause(15)

一般来说,对于交互式绘图,我发现如果您在开始时指定图形和轴axplt.show它们,并使用ax.plots使用plt.drawplt.pause更新它,当您需要更新显示时,它的工作更可靠。例如,

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(5,1)
plt.ion()
plt.show()

def plot(ax, array):
    ax.plot(array)
    plt.draw()

for i in range(5):
    plot(axs[i], np.linspace(-10.*i, 10*i, num=101))

plt.pause(15)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41720533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档