- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当将新的 txt 文件添加到目录时,我想绘制并显示文件中的数据。如果出现另一个文件,我希望绘图更新并显示新数据。在 main 之外创建一个 plot 会导致线程错误,所以我使用全局变量进行了(不是很好)修复。
问题是出现了一个白色的图形,而绘图没有显示。停止程序后,白色的人影消失,出现剧情。正确的图像保存到文件中,但我希望实时显示图像。如果我注释掉 plt.show(),则不会出现任何图。
我尝试了“在 matplotlib 中动态更新绘图”答案 (Dynamically updating plot in matplotlib),但发现因为它从未调用过 show(),所以没有窗口出现。如果我尝试调用 show(),它会阻止更新。
插入 plt.pause() 无效(Real time matplotlib plot is not working while still in a loop)
示例代码无效(How to update a plot in matplotlib?)
这是我的代码:
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
import matplotlib.pyplot as plt
import numpy as np
import config
class MyHandler(PatternMatchingEventHandler):
patterns=["*.txt", "*.TXT"]
def on_created(self, event):
self.process(event)
def process(self, event):
filename = event.src_path
if '_AIt' in filename:
config.isnew=True
config.fname=filename
if __name__ == '__main__':
observer = Observer()
observer.schedule(MyHandler(), path='.', recursive=True)
observer.start()
dat=[0,1]
fig = plt.figure()
ax = fig.add_subplot(111)
Ln, = ax.plot(dat)
ax.set_xlim([0,10])
ax.set_ylim([-1,1])
plt.ion()
plt.show()
try:
while True:
time.sleep(1)
if config.isnew:
config.isnew=False
dataarray = np.array(np.transpose(np.loadtxt(config.fname)))
dat = dataarray[15] #AI0
Ln.set_ydata(dat)
Ln.set_xdata(range(len(dat)))
plt.savefig(config.fname[:-4] + '.png', bbox_inches='tight')
plt.draw()
except KeyboardInterrupt:
observer.stop()
observer.join()
config.py(创建配置设置的默认值)
isnew=False
fname=""
我很困惑,因为下面的示例代码运行良好(来自 pylab.ion() in python 2, matplotlib 1.1.1 and updating of the plot while the program runs)
import pylab
import time
import matplotlib.pyplot as plt
import numpy as np
dat=[0,1]
fig = plt.figure()
ax = fig.add_subplot(111)
Ln, = ax.plot(dat)
ax.set_xlim([0,20])
ax.set_ylim([0,40])
plt.ion()
plt.show()
for i in range (18):
dat=np.array(range(20))+i
Ln.set_ydata(dat)
Ln.set_xdata(range(len(dat)))
plt.pause(1)
print 'done with loop'
最佳答案
下面应该做你想做的:
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
import matplotlib.pyplot as plt
plt.ion() # enter interactive mode
ax = fig.add_subplot(111)
Ln, = ax.plot(dat)
ax.set_xlim([0,10])
ax.set_ylim([-1,1])
plt.draw() # non-blocking drawing
plt.pause(.001) # This line is essential, without it the plot won't be shown
try:
while True:
time.sleep(1)
if config.isnew:
...
plt.draw()
plt.pause(.001)
except KeyboardInterrupt:
observer.stop()
observer.join()
最重要的是在调用plt.draw
之后调用plt.pause
,否则不会绘制,就像另一个python代码块 matplotlib
。值 .001
只是一个尝试。我真的不知道它在幕后是如何工作的,但这似乎有效。
关于matplotlib - 使用看门狗动态更新绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624501/
ATtiny88初体验(四):看门狗 ATtiny88单片机的看门狗使用内部独立的128KHz时钟源,拥有3种工作模式: Interrupt模式:超时产生中断; Syste
1、前言 假设现在有一个应用场景,需要对文件系统进行监控,发生变化时产生日志,对新增的文件做一些相应的操作。 比如说应用到我们之前的音乐高潮提取器:若当前文件夹下增加了一个音乐文件,监控器就调
我正在尝试编写一个程序,该程序可以检测是否已插入或拔出了耳机,并因此执行了某些操作。我使用的是Ubuntu 14.04,经过一番搜索,我发现耳机/耳机的连接状态已写入此路径下的编解码器文件-/ pro
我是 Python 的新手,我正在尝试实现良好的“文件创建”检测。如果我不放置 time.sleep(x),我的文件将以错误的方式详细说明,因为它们仍在文件夹中“创建”。 (缓冲区不为空)我如何在每次
Linux 上是否有用于以下目的的看门狗工具或库?我想构建一个看门狗可执行文件,它启动 2 个进程并在以下情况下重新启动它们: 进程崩溃 进程变得无响应(例如由于某种原因挂起) 互联网搜索找到了 wa
我正在尝试从 C 向 Raspbian 中的看门狗设备 - /dev/watchdog 提供数据。 问题是无论我如何尝试访问设备总是抛出忙碌或权限被拒绝的错误(因为进程已经在运行并由系统提供.....
嗨,我正在考虑使用 Python 在 Windows XP 上制作一个看门狗应用程序,它将执行以下操作: 在给定时间重新启动 Windows。 启动一个 exe 应用程序。 运行计时器以检查:应用程序
我打算使用 Python 看门狗来处理写入文件的目录,我只对图像文件感兴趣,麻烦的是我不太理解 this page 上的代码.这是我的尝试: from watchdog.observers impor
我正在使用 Watchdog监视网络目录,非递归的,随着时间的推移要创建的特定文件模式。我看到的问题是,虽然它在本地测试时效果很好,但如果我从远程计算机更改受监控的目录,则不会触发事件。 这里是我配置
Watchdog 非常棒,可以让您对特定目录进行递归快照。它甚至可以让您使用名为 DirectorySnapshotDiff 的函数比较快照. 我的程序会实时观察目录的变化,因此需要使用此函数的输出。
我在 threaded 进程环境中长时间运行 boost::regex_match(...) 调用时遇到问题。但它可能是另一个具有相同问题的库(API 调用)。 有没有通用的方法来设置看门狗? 对于非
我正在 Raspberry Pi 上开发一个系统,该系统使用 Web 界面与之交互,并具有自定义 C++ 服务器。这个想法是,您只需插入 Pi,不需要手动启动服务器。虽然这不是问题,但服务器有时会出现
我正在尝试实现一个看门狗,它将 ping 主机,如果它已启动,那么它将让 midori 打开远程页面,如果没有,那么它将打开本地页面。 我已根据此处的代码进行了改编:https://raspberry
我有一个无限期运行的实时数据采集器,每隔几秒通过 HTTP 采集数据并将其放入 MySQL 数据库中。 在我的程序中,我有一个 while True 循环,每当最后生成的时间大于 X 秒时,它就会生成
之前我是在Windows系统上开发OpenCl内核,现在我用的是Linux。在 Windows 上,有一个名为 watchdog 的巧妙功能,如果它持续超过 5 秒(默认情况下),它会自动停止 Ope
我正在使用 Watchdog 来监控目录并使其与 Dropbox 保持同步。 我遇到这样一种情况,每次我从 Dropbox 下载文件时,我都会触发一个上传事件,因为我需要写入 Watchdog 正在监
现在我遇到一个关于 Linux NMI Watchdog 的问题。我想使用 Linux NMI 看门狗来检测和恢复操作系统挂起。因此,我将“nmi_watchdog=1”添加到 grub.cfg 中。
我已经在 Ubuntu 10.04 上使用 Apache2 完成了 Phusion Passenger 设置。每当我重新启动 Apache 服务器时,我都会收到以下错误消息,并且 Rails 应用程序
我有一个运行 Debian 的 Beaglebone Black,我需要一个在后台运行的脚本,它会每隔几秒检查一次系统是否仍在运行。据我了解,BBB 中的看门狗是基于硬件的,独立于操作系统运行,因此即
我正在尝试使用 passenger 和 nginx 运行 rails。 Nginx 不会重定向到我的 Rails 应用程序,而是继续到其默认的 index.html 页面,我得到了这个错误: Unab
我是一名优秀的程序员,十分优秀!