x-Achse skalieren ohne den Graph zu ändern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Hallo!!
Folgendes Problem:
Ich habe ein Signal, welches 81s dauert (x:0,1,2....,81), grafisch dargestellt. Nun möchte ich aber den Nullpunkt auf den Wert bei 41s setzen (da ist ein Event) und dann -40s nach links und 40s nach rechts gehen. Der Graph soll sich dabei nicht ändern!!!

Also einfach nur die x-Achse um skalieren und bei 41s soll ein vertikaler Strich sein, um die Amplitude (beim Event) am neuen Nullpunkt genau sehen zu können.

Danke für eure Hilfe.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Mit matplotlib.pyplot.xticks könntest du so ein verhalten erzeugen.

Und deine Linie plotest du einfach in deinen Graph wie du es mit Daten auch tust.
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Also plt.xticks habe ich schon probiert, aber da verschiebt er den Graphen mit.

Okay, den vertikalen Strich habe ich jetzt wie folgt gemacht:

Code: Alles auswählen

plt.axvline(41, color='k', linestyle='--')
BlackJack

@Ede1994: Also wenn ich Dich richtig verstanden habe dann willst Du nichts an der X-Achse ändern, sondern die *Daten* um 41 Sekunden verschieben, damit das Ereignis am Nullpunkt liegt.
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

@BlackJack:
Ich bin noch nicht so lange bei Python, deswegen weiß ich nicht so wirklich was wie zu realisieren ist. Aber ja, ich möchte die Daten um 41s nach links verschieben.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Daten verschieben:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,3,5,7,11])
y = np.array([0,1,2,3,4])
plt.plot(x,y)
plt.plot(x-10,y) #verschoben (daten verändert)
plt.show()
Label ausgetauscht (xticks)

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,4,8,16])
y = np.array([0,1,2,3,4])
plt.plot(x,y)
plt.xticks( np.arange(min(x),max(x),1), np.arange(min(x)-10,max(x)-10,1) )
plt.show()
xticks ist nicht so ganz einfach und muss für andere Daten immer angespast werden, dafür kann man jedoch alles denkbare an eine Achse schreiben was man will und auch in den Abständen die man will.
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Okay. Danke. Hat funktioniert.

Noch eine kleine Frage.....
Wie kann ich denn jetzt die Achse in individuellen Schritten einteilen bzw. die x-Achse nach meinen Vorlieben bezeichnen?

Danke.
Antworten