Seite 1 von 1

x-Achse skalieren ohne den Graph zu ändern

Verfasst: Dienstag 9. Mai 2017, 11:32
von Ede1994
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.

Re: x-Achse skalieren ohne den Graph zu ändern

Verfasst: Dienstag 9. Mai 2017, 11:47
von Sr4l
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.

Re: x-Achse skalieren ohne den Graph zu ändern

Verfasst: Dienstag 9. Mai 2017, 11:59
von Ede1994
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='--')

Re: x-Achse skalieren ohne den Graph zu ändern

Verfasst: Dienstag 9. Mai 2017, 12:20
von 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.

Re: x-Achse skalieren ohne den Graph zu ändern

Verfasst: Dienstag 9. Mai 2017, 12:24
von Ede1994
@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.

Re: x-Achse skalieren ohne den Graph zu ändern

Verfasst: Dienstag 9. Mai 2017, 13:38
von Sr4l
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.

Re: x-Achse skalieren ohne den Graph zu ändern

Verfasst: Samstag 13. Mai 2017, 09:39
von Ede1994
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.