Guten Morgen liebe Community,
ich muss für eine wissenschaftliche Arbeit Daten plotten. Dies habe ich soweit auch hinbekommen.
Auf der x-Achse befinden sich gut 10000 Werte. Auf der y-Achse sind die Kräfte eingetragen.
Nun möchte ich die Peaks makieren und die Werte an der Stelle ausgeben. Idealerweise ohne die x-Werte bei den Peaks zu kennen. Alternativ wäre es auch okay die x-Werte einzugeben. Die Peaks kann ich notfalls selbst ablesen. Könnt ihr mir weiterhelfen?
LG Tom
Datensatz plotten
So ein bisschen Kontext ist aber schon ratsam.
Zeig anhand eines lauffähigen Beispielcodes, was du bisher tust. Denn aus deiner Erklärung gehen nicht einmal so Kleinigkeiten wie die verwendeten Module und Bibliotheken hervor...
Zeig anhand eines lauffähigen Beispielcodes, was du bisher tust. Denn aus deiner Erklärung gehen nicht einmal so Kleinigkeiten wie die verwendeten Module und Bibliotheken hervor...
-
- User
- Beiträge: 512
- Registriert: Mittwoch 13. November 2019, 08:38
Schuss ins Blaue: https://docs.scipy.org/doc/scipy/refere ... peaks.html.
Grundsätzlich hat sparrow Recht: Um bei Problemen eine Hilfestellung geben zu können, müssen eine detaillierte Beschreibung und vor allem der Code vorhanden sein.
Grundsätzlich hat sparrow Recht: Um bei Problemen eine Hilfestellung geben zu können, müssen eine detaillierte Beschreibung und vor allem der Code vorhanden sein.
-
- User
- Beiträge: 3
- Registriert: Donnerstag 3. Dezember 2020, 15:15
Also das ist soweit mein Code:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
abc = pd.read_excel('abc.xlsx', 'Tabelle1')
Reihenfolge = abc['Reihenfolge'][1:]
F = abc['F'][1:]
plt.plot(Reihenfolge, F)
plt.show()
Nun möchte ich F bei bei z.B. Reihenfolge=881 ausgeben im Plot. Also das dieser Punkt fabrlich kenntlich gemacht ist und das der Wert im Diagramm zu sehen ist.
Könnt ihr mir weiterhelfen?
Danke und viele Grüße,
Tom
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
abc = pd.read_excel('abc.xlsx', 'Tabelle1')
Reihenfolge = abc['Reihenfolge'][1:]
F = abc['F'][1:]
plt.plot(Reihenfolge, F)
plt.show()
Nun möchte ich F bei bei z.B. Reihenfolge=881 ausgeben im Plot. Also das dieser Punkt fabrlich kenntlich gemacht ist und das der Wert im Diagramm zu sehen ist.
Könnt ihr mir weiterhelfen?
Danke und viele Grüße,
Tom
-
- User
- Beiträge: 512
- Registriert: Mittwoch 13. November 2019, 08:38
Zunächst die offensichtlichen Punkte:
- Numpy wird importiert, aber nicht verwendet.
- Variablen schreibt man komplett_klein.
- Verwende vernünftige Namen für deine Variablen, die den Inhalt beschreiben. Auch für deine Beispiele hier.
- Bitte benutze die Code-Tags im Forum, damit die Einrückungen erhalten bleiben (</>-Knopf im vollständigen Editor).
Die Verwendung von `[1:]` erschließt sich mir nicht ganz. Warum machst du das? Ich vermute, dass du Dinge überspringen willst, was gleich beim richtigen Einlesen der Daten erledigt werden kann (s. https://pandas.pydata.org/pandas-docs/s ... excel.html).
Wenn du einfach nur bestimmte Punkte markieren willst: https://matplotlib.org/3.3.3/api/_as_ge ... atter.html. Ansonsten schau dir meinen vorherigen Link an - das sind auch Beispiele in denen genau das gemacht wird, was du vor hast.
- Numpy wird importiert, aber nicht verwendet.
- Variablen schreibt man komplett_klein.
- Verwende vernünftige Namen für deine Variablen, die den Inhalt beschreiben. Auch für deine Beispiele hier.
- Bitte benutze die Code-Tags im Forum, damit die Einrückungen erhalten bleiben (</>-Knopf im vollständigen Editor).
Die Verwendung von `[1:]` erschließt sich mir nicht ganz. Warum machst du das? Ich vermute, dass du Dinge überspringen willst, was gleich beim richtigen Einlesen der Daten erledigt werden kann (s. https://pandas.pydata.org/pandas-docs/s ... excel.html).
Wenn du einfach nur bestimmte Punkte markieren willst: https://matplotlib.org/3.3.3/api/_as_ge ... atter.html. Ansonsten schau dir meinen vorherigen Link an - das sind auch Beispiele in denen genau das gemacht wird, was du vor hast.
-
- User
- Beiträge: 3
- Registriert: Donnerstag 3. Dezember 2020, 15:15
Danke für die Tipps
Ich habe es mittlerweile geschafft, dass ich einen Text mit der Funktion annotate im Diagramm plotten kann:
plt.annotate('abc',
xy=(881, F[880]), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3, rad=.2"))
Allerdings möchte ich keinen Text plotten sondern den Wert F[880]. Könnt ihr mir da weiterhelfen?

plt.annotate('abc',
xy=(881, F[880]), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3, rad=.2"))
Allerdings möchte ich keinen Text plotten sondern den Wert F[880]. Könnt ihr mir da weiterhelfen?