Seite 2 von 2

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Sonntag 4. November 2018, 21:39
von Mogician
Also ich bekomme immer einen der beiden Error, egal ob ich Komma oder Punkt mache.
Hab eben mal alle anderen TI-Zeilen gelöscht, und die TI101 mit Punkt und Komma ausprobiert, error war immer "TypeError: Empty 'DataFrame': no numeric data to plot".

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Montag 5. November 2018, 10:02
von Mogician
Hat vielleicht noch einer eine Lösung oder ein Beispiel mit einer einfachen Datei, wo es funktioniert?

Danke

edit: Frage nach einem Beispiel besteht jetzt nicht mehr unbedingt, da ThomasL (Danke dafür) das schon macht. Wenn jemand trotzdem einen Einfall hat wäre das natürlich immer noch interessant. Danke an alle!

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Montag 5. November 2018, 17:32
von nezzcarth
Mogician hat geschrieben: Sonntag 4. November 2018, 19:32 Natürlich gerne. Soll ich das irgendwo hochladen und dir den Link schicken oder geht das auch irgendwo hier, oder direkt?
Falls möglich, stell den Link zur Originaldatei doch gerne hier rein, da ist die Schwelle dir zu helfen für alle niedriger.

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Montag 5. November 2018, 18:25
von ThomasL
Mogician, du hast das Notebook in deinem Postfach

Code: Alles auswählen

import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline

df = pd.read_table('Daten_02112018114518.txt', skiprows=[0,1,2,3,4,5,6,7,8,9,10,11,13], index_col=False)
df.info()

df.head(2)

# zusammenfügen der Spalten DATE und TIME zu einer vom Typ DATETIME
newdate = df['Date'] + ' ' + df['Time']
newdate = pd.to_datetime(newdate, errors='raise')
newdate = pd.DataFrame(newdate, columns=['date_time'])
df = pd.concat([newdate, df], axis=1)

# die DATETIME Spalte als Index definieren
df.set_index('date_time', inplace=True)
df.head(2)

df['TI101'].plot(kind='line', figsize=(10,5), color=['black'], ylim=[40, 140], xlim=['2018-02-11 11:44:50', '2018-02-11 12:25:22'])
plt.title('TI101')
plt.ylabel('Messwert')
plt.xlabel('Zeitpunkt')
plt.show()

TI101_102 = df[['TI101', 'TI102']]
diff = pd.DataFrame(df.TI101 - df.TI102, columns=['Difference'])
TI101_102 = pd.concat([TI101_102, diff], axis=1)
TI101_102.plot(kind='line', color=['blue', 'green', 'red'], figsize=(18,5), rot=90, xlim=['2018-02-11 11:44:50', '2018-02-11 12:25:22'])
plt.title('TI101 und TI102, sowie Differenz der beiden')
plt.ylabel('Messwert')
plt.xlabel('Zeitpunkt')
plt.legend(labels=TI101_102.columns, loc='best')
plt.show()

fig = plt.figure() # create figure

ax0 = fig.add_subplot(1, 2, 1) # add subplot 1 (1 row, 2 columns, first plot)
ax1 = fig.add_subplot(1, 2, 2) # add subplot 2 (1 row, 2 columns, second plot). See tip below**

# Subplot 1: 
df[['TI101', 'TI102']].plot(kind='line', figsize=(18,5), ax=ax0, color=['blue', 'green'], xlim=['2018-02-11 11:44:50', '2018-02-11 12:25:22'])  # add to subplot 1
ax0.set_title('T1101 und TI102')
ax0.set_ylabel('Messwerte')
ax0.set_xlabel('Zeitpunkte')

# Subplot 2:
diff = pd.DataFrame(df.TI101 - df.TI102, columns=['Differenz'])
diff.plot(kind='line', figsize=(18, 5), ax=ax1, ylim=[-5,17], xlim=['2018-02-11 11:44:50', '2018-02-11 12:25:22'])  # add to subplot 2
ax1.set_title ('Differenz')
ax1.set_ylabel('Messwerte')
ax1.set_xlabel('Zeitpunkte')
ax1.annotate('Was ist das für eine Spitze?', xy=('2018-02-11 12:01:00', -3))

plt.show()

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Donnerstag 8. November 2018, 18:11
von Mogician
Super, der code hilft mir schon massiv weiter. Eine Frage hätte ich jetzt noch.
Wie greife ich einen bestimmten Wertebereich raus auf der x-Achse, also zb wenn die Messung von 12h bis 15h lief, und man nur von 13h-14h plotten möchte?
Für die y-Achse hab ich das geschafft, aber wegen dem Zeitformat noch nicht auf der x-Achse.

Also ich habe probiert den code von ThomasL anzuwenden

Code: Alles auswählen

xlim=(['2018-02-11 11:44:50', '2018-02-11 12:25:22'])
und auch

Code: Alles auswählen

plt.axis([0, 50, 12, 20])
und den letzten dann auch mit diversen xmin und xmax Werten aber im Ergebnis kriege ich immer was ganz anderes auf der x-Achse

Danke

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Donnerstag 8. November 2018, 18:54
von Mogician
Also ich habe jetzt doch die Zeitachse so hinbekommen wie ich wollte, dafür sind aber die Messwerte weg.

Code: Alles auswählen

plt.figure()

df['TI111'].plot()
df['TI112'].plot()
df['TI113'].plot()
df['TI114'].plot()
df['TI115'].plot()
df['TI116'].plot()
plt.xlim(58800,62000)
plt.legend()
plt.xlabel('Time')
plt.ylabel('Temperature [°C]')
Bild Bild


edit: Geht jetzt doch, Datum und Uhrzeiten waren bei mir nur etwas anders.

Code: Alles auswählen

plt.xlim(['2018-11-07 16:10:00', '2018-11-07 17:10:00'])

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Donnerstag 8. November 2018, 19:35
von ThomasL
Freut mich, dass ich dir helfen konnte.

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Sonntag 11. November 2018, 23:20
von Mogician
Habt ihr vielleicht noch eine Idee, wie ich den Kurven immer einen Namen direkt zuweisen kann? Also nicht über die Legende? Das wird sonst schnell unübersichtlich.

Danke

Re: Messdaten (100.000+) auswerten, Diagramme erzeugen

Verfasst: Montag 12. November 2018, 07:09
von ThomasL