Hallo liebe Community,
Ich habe mehrere Signale aus Messwerte( TXT Datei) erzeugt. Mit einer For schleife habe ich alle Signale bekommen. Auf x Achse läuft die Zeit (35s) für alle signale gliech. Die Amplitude allerdings ist anders vom Signal zu dem anderen. Damit ich eine aussagekräftige Interpretierung der Signale muss ich die Skalierung auf der Achse Y einheitlich machen. Ich würde mich sehr freuen, wenn ihr eine Idee habt und mir helfen könnt.
Liebe Grüße
Mein Code ist der folgende ´:
fig, axes = plt.subplots(nrows=len(gut), ncols=1, figsize = (15, 250))
fig.tight_layout()
# Schleife durchlaufen
for i in range(len(gut)):
# file öffnen
myfilegut = open(gut) #file gut öffnen und durchlaufen
header = myfilegut.readline() #erste Zeile als Header speichern
data = myfilegut.readlines() # alle nachfolgende zeilen einlesen und in data speichern
myfilegut.close() #file gut schließen
x = []
y = []
z = []
# für jede Zeile des Files
for line in data:
# Zeilen in eine Tabelle Basis teilen
d= line.split('\t')
# Elemente x,y,z adieren dann Kommas durch Punkte ersetzen und data im string zum float konvertieren
x.append(float(d[0].replace(',','.')))
y.append(float(d[1].replace(',','.')))
z.append(float(d[2].replace(',','.')))
# zum Array konvertieren
x1 = np.array(x)
y1 = np.array(y)
z1 = np.array(z)
title = gut.split('\\')[-1]
# Beschleunigungsaufnehmer plot bettiteln
axes.set_title(f"{title} - BA (m/(s*s))")
# plotten
axes.plot(x1,z1)
Skalierung mehreren Signale
Willst Du einen Plot mit mehreren Achsen haben (https://stackoverflow.com/questions/773 ... different-
scales)?
Statt über einen Index iteriert man in Python direkt über die Elemente, hier mit `zip`, weil Du zwei Listen hast.
Dateien öffnet man mit with. Das my- ist bei Variablennamen meist unsinnig, weil nichtssagend.
Einfacher geht das Lesen mit numpy.
scales)?
Statt über einen Index iteriert man in Python direkt über die Elemente, hier mit `zip`, weil Du zwei Listen hast.
Dateien öffnet man mit with. Das my- ist bei Variablennamen meist unsinnig, weil nichtssagend.
Einfacher geht das Lesen mit numpy.
Code: Alles auswählen
def convert_float(text):
return float(text.replace(',', '.'))
fig, axes = plt.subplots(nrows=len(gut), ncols=1, figsize = (15, 250))
fig.tight_layout()
for filename, axis in zip(gut, axes):
usecols = [0, 1, 2]
x, y, z = numpy.loadtxt(filename,
skiprow=1,
usecols=usecols,
converters=dict.fromkeys(usecols, convert_float),
unpack=True)
title = os.path.basename(filename)
# Beschleunigungsaufnehmer plot betiteln
axis.set_title(f"{title} - BA (m/(s*s))")
axis.plot(x, z)
vielen Dank für Deine Antwort,
ich habe mehrere Subplots, die nicht die gleiche Skalierung haben. Dabei ist die Amplitude beispielhaft in einem subplot bis zu 60 während bei dem anderen Subplot liegt die Amplitude nur bei 20. Wie kann ich alle Subplots auf einer Skala von 40 (Bei allen signalen) erzeugen?
Danke im Voraus und beste Grüße
ich habe mehrere Subplots, die nicht die gleiche Skalierung haben. Dabei ist die Amplitude beispielhaft in einem subplot bis zu 60 während bei dem anderen Subplot liegt die Amplitude nur bei 20. Wie kann ich alle Subplots auf einer Skala von 40 (Bei allen signalen) erzeugen?
Danke im Voraus und beste Grüße
Also willst Du normieren.
Code: Alles auswählen
z /= z.max()