2017-09-06 2 views
1

Ich versuche, etwas mit Python zu plotten. Ich habe eingehende Daten, die eine Float-Variable bei jeder Iteration aktualisieren. Ich möchte es mit Matplotlib in Bezug auf die Zeit darstellen. Hier stecke ich fest!Plot mit Matplotlib von tcp Daten

import socket 
import sys 

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
socket.bind(('', 5027)) 
socket.listen(5) 
client, address = socket.accept() 
print("{} connected".format(address)) 
while True: 
    response = client.recv(512) 
    print(response) 
print ("close") 
client.close() 
stock.close() 

Antwort ist die String-Variable.

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

body = '[email protected][email protected][email protected][email protected]' 
one, two, three, four, five = body.split("@") 
signal_1 = float(one) 
signal_2 = float(two) 
signal_3 = float(three) 
signal_4 = float(four) 
# Plot 
t = 5 
plt.plot(t, signal_1,t, signal_2,t, signal_3,t, signal_4,) 
plt.show() 

body ist das simulierte Signal von den Antwortvariablen in dem ersten Code. Ich möchte den Wert von signal_1 in Bezug auf die Zeit darstellen. Bitte helfen Sie mir!

Antwort

0

Jede zu plottende Reihe hat nur einen Datenpunkt, z. der erste wäre (5,1.33).
Der Befehl plt.plot ist ein Liniendiagramm. Eine Linie, die einen einzelnen Punkt mit sich selbst verbindet, bleibt jedoch unsichtbar.

Eine mögliche Lösung besteht darin, eine Markierung (marker="o") an den entsprechenden Koordinaten zu setzen.

plt.plot(t, signal_1,t, signal_2,t, signal_3,t, signal_4, marker="o") 

Natürlich können Sie auch verschiedene Marker für die respecive Punkte wählen könnte,

plt.plot(t, signal_1, "ko", t, signal_2, "bs", t, signal_3, "rd", t, signal_4, "y^") 
+0

Danke, Wie aktualisiere ich die Grafik in Bezug auf Zeit, wie 10 Punkte pro Sekunde? –

+0

Sie können den interaktiven Modus oder 'FuncAnimation' verwenden. Es gibt viele Beispiele, z.B. [this one] (https://stackoverflow.com/questions/45157538/python-matplotlib-loop-clear-and-show-different-plots-over-the-same-figure). Ich würde vorschlagen, dass Sie es ausprobieren und wenn Sie stecken bleiben, stellen Sie eine neue Frage mit einem [mcve] des Problems. – ImportanceOfBeingErnest

+0

Danke. Aber ich möchte eine Linie und nicht einen Punkt zeichnen. d.h., jedes Mal, wenn das Signal_1 mit einem neuen Wert aktualisiert wird, verbindet es sich mit dem vorherigen Punkt. –