Python Live Plot aus .txt
Verfasst: Dienstag 7. Juli 2020, 20:17
Hallo Leute,
ich versuche mich mit Python aus (Aus Spaß in meiner Freizeit) und versuche deswegen eine Meßtechnik für einen Sensor zu programmieren.
Ich habe zwei Probleme.
1) Ich habe das Problem, dass ich die Textdatei erst am Ende des Skriptes speichert und nicht bei jeder einzelnen Eintragung eines Messwertes. Ich dachte bei file.close speichert die Datei.
Allerdings aktuallisiert der Graph erst bei Abschluss der Eintragung aller Zahlen :/.
2) die vertikale Achse (y-Achse) zeigt die Werte nicht in richtiger Reihenfolge an. D.h. es steht eine 10 vor der 0. Ich dachte es könnte an der Speicherung als String liegen aber die Werte sind meiner Meinung nach Integer (INT)
Den Code startet man indem man zuert den Ersten Code ausführt und dann den Zweiten. Dafür bitte eine Text Datei erstellen mit dem Namen "aloha1.txt" im gleichen Verzeichnis.
Hier der Code1:
Hier Code2:
Hier ist ein Beispiel wie es am Ende aussehen soll nur das die Werte aus einer Datei gezogen werden sollen(Hier ist die y Achse auch größenordnungsmäßig richtig):
ich versuche mich mit Python aus (Aus Spaß in meiner Freizeit) und versuche deswegen eine Meßtechnik für einen Sensor zu programmieren.
Ich habe zwei Probleme.
1) Ich habe das Problem, dass ich die Textdatei erst am Ende des Skriptes speichert und nicht bei jeder einzelnen Eintragung eines Messwertes. Ich dachte bei file.close speichert die Datei.
Allerdings aktuallisiert der Graph erst bei Abschluss der Eintragung aller Zahlen :/.
2) die vertikale Achse (y-Achse) zeigt die Werte nicht in richtiger Reihenfolge an. D.h. es steht eine 10 vor der 0. Ich dachte es könnte an der Speicherung als String liegen aber die Werte sind meiner Meinung nach Integer (INT)
Den Code startet man indem man zuert den Ersten Code ausführt und dann den Zweiten. Dafür bitte eine Text Datei erstellen mit dem Namen "aloha1.txt" im gleichen Verzeichnis.
Hier der Code1:
Code: Alles auswählen
from IPython import get_ipython
get_ipython().magic('reset -sf')
## clear all
##############################################################################
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
##############################################################################
plt.style.use('fivethirtyeight')
data=open('aloha1.txt','r').read()
lines=data.split('\n')
def animate(i):
data=open('aloha1.txt','r').read()
lines=data.split('\n')
x=[]
y=[]
for line in lines:
if len(line) > 1:
x1,y1 =line.split('\t')
x.append(x1)
y.append(y1)
plt.cla()
plt.plot(x,y,label='linie1')
plt.legend(loc='upper left')
ani = FuncAnimation(plt.gcf(), animate, interval=1000)
plt.tight_layout()
plt.show()
Code: Alles auswählen
from IPython import get_ipython
get_ipython().magic('reset -sf')
import random
from itertools import count
from time import sleep
n=15 #wieviele neue zahlen
count=0 #um Anzahl der Zeilen zu bestimmen
z=int(input('willst du die datei zuruecksetzen y=1/n=0?'))#zurücksetzen
if z == 1:
file3=open('aloha1.txt','w')
file3.write('')
file3.close()
file4=open('aloha1.txt','r')#anzahl der zeilen ermitteln count
with file4 as f:
for line in f:
count +=1
for new in range(count,count+n):#neue zahlen einschreiben
if new == 0: #wenn es eine erste Zeile gibt kein \n am Anfang
file=open('aloha1.txt','a')
x1 = new
y1 = random.randint(0,10)
file.write('%.f\t%.f' %(x1,y1))
file.close()
file1=open('aloha1.txt','r') #dachte damit kann ich es speichern
#read_lines= file1.readlines()
#print(read_lines)
file1.close()
sleep(0)
else:#wenn es keine zweite Zeile gibt \n am Anfang
file=open('aloha1.txt','a')
x1 = new
y1 = random.randint(0,10)
file.write('\n%.f\t%.f' %(x1,y1))
file.close()
file1=open('aloha1.txt','r') #dachte damit kann ich es speichern
#read_lines= file1.readlines()
#print(read_lines)
file1.close()
sleep(0)
Hier ist ein Beispiel wie es am Ende aussehen soll nur das die Werte aus einer Datei gezogen werden sollen(Hier ist die y Achse auch größenordnungsmäßig richtig):
Code: Alles auswählen
from IPython import get_ipython
get_ipython().magic('reset -sf')
## clear all
##############################################################################
import numpy as np
import matplotlib.pyplot as plt
import random
from itertools import count
from matplotlib.animation import FuncAnimation
from time import sleep
##############################################################################
x=[]
y=[]
z=[]
index = count()
plt.style.use('fivethirtyeight')
def animate(i):
x.append(next(index))
y.append(random.randint(0,1))
z.append(random.randint(0,1))
plt.cla()
plt.plot(x,y,label='linie1')
plt.plot(x,z,label='linie2')
plt.legend(loc='upper left')
ani = FuncAnimation(plt.gcf(), animate, interval=1)
plt.tight_layout()
plt.show()