Seite 1 von 1

Skalierung mehreren Signale

Verfasst: Donnerstag 20. Januar 2022, 15:31
von Bibi93
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)

Re: Skalierung mehreren Signale

Verfasst: Donnerstag 20. Januar 2022, 16:04
von Sirius3
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.

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)

Re: Skalierung mehreren Signale

Verfasst: Freitag 21. Januar 2022, 13:20
von Bibi93
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

Re: Skalierung mehreren Signale

Verfasst: Freitag 21. Januar 2022, 13:39
von Sirius3
Also willst Du normieren.

Code: Alles auswählen

z /= z.max()

Re: Skalierung mehreren Signale

Verfasst: Samstag 22. Januar 2022, 13:09
von Bibi93
Danke für deinen Versuch. Ich habe es gefunden:
axes.set_ylim sollte ich hinzufügen.