Plotten von dynamischen Daten mit matplotlib

Ich Schreibe eine Anwendung die Anzeige von Daten, die dynamisch ändert (die gelesenen Daten von einem socket).

Als "dummy" - Fall, ich versuche zu zeichnen, ein Sinus mit einer amplitude, multipliziert mit 1.1, jede Sekunde:

import numpy as np
import matplotlib.pyplot as plt
import time

x = np.arange(0, 10, 0.1);
y = np.sin(x)


for i in xrange(100):
    plt.plot(x, y)
    time.sleep(1)
    y=y*1.1

Dies ist offensichtlich nicht die Art, wie Sie es tun, aber es zeigt meine Absichten.

Wie kann es gemacht werden, richtig?

EDIT:
Im folgenden wird die traceback-Ausgang des code-Vorschlag in @mskimm Antwort:

plt.show() #Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "<ipython-input-5-ed773f8e3e84>", line 7, in update
    plt.draw()
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 466, in draw
    get_current_fig_manager().canvas.draw()
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 240, in draw
    tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/tkagg.py", line 12, in blit
    tk.call("PyAggImagePhoto", photoimage, id(aggimage), colormode, id(bbox_array))
RuntimeError: main thread is not in main loop

EDIT 2:

es stellt sich heraus, dass der gleiche code funktioniert bei der Ausführung im qtconsole... (keine Ahnung warum?)
Wie auch immer, jeder drucken, um den Maßstab zu zeichnen, so dass die "animation" fehlt.
Ich versuche es mal mit plt.autoscale_view(False,False,False) aber das verursacht keine Handlung überhaupt.

Sind Sie versuchen zu zeigen, dies als eine etwas 'animiert' Grundstück, oder sind Sie auf der Suche nach 100 verschiedenen Parzellen hier?
ja, einen animierten plot. sorry für nicht deutlich genug.

InformationsquelleAutor user3515666 | 2014-04-14

Schreibe einen Kommentar