【问题标题】:python 2.7 mac osx interactive plotting with matplotlib not workingpython 2.7 mac osx交互式绘图与matplotlib不起作用
【发布时间】:2013-09-30 23:08:56
【问题描述】:

来自here我找到了这段代码:

import random
from matplotlib import pyplot as plt
import numpy as np

plt.ion() # interactive mode
ydata = [0] * 50 

# make plot
ax1 = plt.axes() 
line, = plt.plot(ydata)
plt.ylim([0, 100]) # set the y-range

while True:
    randint = int(random.random() * 100)
    ymin = float(min(ydata)) - 10
    ymax = float(max(ydata)) + 10
    plt.ylim([ymin,ymax])
    ydata.append(randint)
    del ydata[0]
    line.set_xdata(np.arange(len(ydata)))
    line.set_ydata(ydata)  # update data
    plt.draw() # update plot

我得到一个弹出的绘图窗口,但没有数据出现,也没有重绘……知道我做错了什么吗?

【问题讨论】:

  • 在 Mac 10.6.8 上使用 python3.3 和 python2.7,matplotlib 1.3.0,numpy 1.7.1 一切都很好。你有最新的包吗?如果您使用另一个后端会发生什么 - 如果我插入 import matplotlib; matplotlib.use('Qt4Agg') 那么也不会重绘任何内容。 You might need another backend?!
  • matplotlib.get_backend() 返回什么?尝试在循环中添加plt.pause(.1)
  • 我的后端是'WXAgg - 我不知道这是好是坏。暂停似乎奏效了!

标签: python numpy matplotlib graphing


【解决方案1】:

您遇到的问题是由于 gui mainloops 的工作方式。每当您绘制调用draw 事件时,都会将事件添加到事件队列中以供主循环处理。如果您尽可能快地添加它们,则循环永远不会清除它的队列并实际绘制到屏幕上。

添加plt.pause(.1) 将暂停循环并允许主循环(冒着拟人化的风险)“喘口气”并更新屏幕上的小部件

相关:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 2012-11-12
    • 2016-11-16
    • 1970-01-01
    • 2021-01-31
    • 2014-11-15
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多