Seite 1 von 1

Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 13:47
von Lienz20013
Hi liebes Forum,
ich habe bis jetzt folgende Daten im csv format:

data_FBGS =

Code: Alles auswählen

DateTime;Temp1;Temp2;Temp3;Temp4
2014-09-09 15:59:46.296000;21.119187757507333;15.698826979476781;12.85964391690625;13.03055878929256
2014-09-09 16:09:46.375000;21.148616833440343;15.698826979476781;12.829970326402503;13.001455180445749
also Zeit, Sensor1 mit Messwert, Sensor2 mit Messwert...

und ich habe:
T_Sensor_depth =

Code: Alles auswählen

array([ 0,  1,  2,  3  ])
Jetzt möchte ich die Messwerte in den bestimmten Tiefen über die Zeit mit plt.imshow darstellen (x-Achse=Zeit; y-Achse=Tiefe).
Bis jetzt habe ich folgendes Probiert:

Code: Alles auswählen

years     = mdates.YearLocator()   # every year
months    = mdates.MonthLocator()  # every month
days      = mdates.DayLocator()    # every day
yearsFmt  = mdates.DateFormatter('%Y')
monthsFmt = mdates.DateFormatter('%b-%Y')
daysFmt   = mdates.DateFormatter('%d-%m-%Y')
ymajorFmt2 = FormatStrFormatter('%.2f')
ymajorFmt3 = FormatStrFormatter('%.3f')

T_FBGS_max = max(data_FBGS)
T_FBGS_min = min(data_FBGS)

fig2 = plt.figure(2) 
ab2 = fig2.add_subplot(212)
#colorbar
cmap = plt.cm.spectral
cmap.set_over(color='w',alpha=10)
cmap.set_under(color='k',alpha=10)
norm = colors.Normalize(vmin = T_FBGS_min, vmax = T_FBGS_max)

#date xAchse
ab2.xaxis.set_major_locator(months)
ab2.xaxis.set_minor_locator(days)
ab2.xaxis.set_major_formatter(monthsFmt)

ab2.xaxis.grid(True, which='major')  
xmin,xmax = mdates.date2num([min(data_FBGS),max(data_FBGS)])
ymin,ymax = min(T_fiber_depth),max(T_fiber_depth)

plt.imshow(data_FBGS.T,extent=[xmin,xmax,ymax,ymin],cmap=cmap,origin='bottom',aspect='auto',interpolation='gaussian')
for i in range(len(T_fiber_depth)):
    ab2.axhline(T_fiber_depth[i],color='k',lw=0.01,linestyle=':')  
ab2.xaxis_date()
fig2.autofmt_xdate()

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 14:04
von MagBen
Lienz20013 hat geschrieben:Bis jetzt habe ich folgendes Probiert:
Und wo ist das Problem? Wie lautet die Fehlermeldung? Was gefällt Dir am Plot nicht?

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 14:10
von Lienz20013
Er ist falsch herum. Die Tiefen und die Messwerte.
Also Temp1 = 3 soll aber Temp1 = 0 sein.
Und ich hätte vieleicht gerne den Mittelwert oder Median jedes der Messwerte bei jedem Sensor abgezogen damit ich eine bessere auflösung von kleineren variationen bekomme.

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 14:35
von MagBen
Lienz20013 hat geschrieben:Er ist falsch herum. Die Tiefen und die Messwerte.
Also Temp1 = 3 soll aber Temp1 = 0 sein.
probier statt
plt.imshow(data_FBGS.T,extent=[xmin,xmax,ymax,ymin],cmap=cmap,origin='bottom',aspect='auto',interpolation='gaussian')
lieber
plt.imshow(data_FBGS.T,extent=[xmin,xmax,ymin,ymax],cmap=cmap,origin='bottom',aspect='auto',interpolation='gaussian')

Das korrigiert zwar nicht die angezeigten Werte, aber die Skala.

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 14:43
von Lienz20013
Ja so ist die Zuordnung richtig aber wie kann ich die Werte umdrehen?

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 14:49
von MagBen

Code: Alles auswählen

plt.imshow(data_FBGS[:,::-1].T,extent=[xmin,xmax,ymax,ymin],cmap=cmap,origin='bottom',aspect='auto',interpolation='gaussian')

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 14:57
von Lienz20013
Danke aber da kommt bei mir der fehler

TypeError: unhashable type

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 15:16
von MagBen
Was ist data_FBGS denn für ein Typ? Ich bin davon ausgegangen, dass es numpy.ndarray ist.

Code: Alles auswählen

print(data_FBGS.__class__)
# sollte <type 'numpy.ndarray'> ausgeben

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 15:23
von Lienz20013
Nein leider nicht sondern

Code: Alles auswählen

<class 'pandas.core.frame.DataFrame'>
mein Fehler da ich nur einen Auszug des Programms geliefert habe.

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 15:37
von MagBen
dann probier mal das

Code: Alles auswählen

plt.imshow(data_FBGS.values[:,::-1].T,extent=[xmin,xmax,ymax,ymin],cmap=cmap,origin='bottom',aspect='auto',interpolation='gaussian')

Re: Zeitliche Darstellung von Messwerten

Verfasst: Dienstag 25. November 2014, 15:46
von Lienz20013
Ja sehr schön danke.