x-Achse im Format mm:ss.0

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: x-Achse im Format mm:ss.0

von KloBoBBerLe » Di 18. Aug 2015, 20:26

Liebe Leser,

bitte entschuldigt, dass ich dieses Topic nach so langer Zeit wieder auffrische...

Ich habe derzeit exakt das selbe Problem wie der Fragesteller, nur mit dem Unterschied, dass mein Datenlogger die halbsekündigen Messwerte nicht in Zwischensekunden abspeichert, sondern zwei Messwerte im selben Sekundenwert.

In Excel habe ich die Werte nun auf verschiedene Arten LaTeX-tauglich aufbereitet und als *.txt-Dateien abgespeichert:

Möglichkeit 1: Datum <tab> Zeit [hh:mm:ss] <tab> Messwert
Datum	Zeit	Messwert
2015-08-17	00:00:00	1
2015-08-17	00:00:01	2
2015-08-17	00:00:01	3
2015-08-17	00:00:02	4
2015-08-17	00:00:02	5
2015-08-17	00:00:03	6
2015-08-17	00:00:03	7
2015-08-17	00:00:04	8
2015-08-17	00:00:04	9
2015-08-17	00:00:05	10
2015-08-17	00:00:05	11
Möglichkeit 2: Datum <Leerzeichen> Zeit [hh:mm:ss] <tab> Messwert
Datum	Messwert
2015-08-17 00:00:00	1
2015-08-17 00:00:01	2
2015-08-17 00:00:01	3
2015-08-17 00:00:02	4
2015-08-17 00:00:02	5
2015-08-17 00:00:03	6
2015-08-17 00:00:03	7
2015-08-17 00:00:04	8
2015-08-17 00:00:04	9
2015-08-17 00:00:05	10
2015-08-17 00:00:05	11
Möglichkeit 3: Zeit [hh:mm:ss] <tab> Messwert
Zeit	Messwert
00:00:00	1
00:00:01	2
00:00:01	3
00:00:02	4
00:00:02	5
00:00:03	6
00:00:03	7
00:00:04	8
00:00:04	9
00:00:05	10
00:00:05	11
Möglichkeit 4: Zeit [mm:ss] <tab> Messwert
Zeit	Messwert
00:00	1
00:01	2
00:01	3
00:02	4
00:02	5
00:03	6
00:03	7
00:04	8
00:04	9
00:05	10
00:05	11
Sofern ich date coordinates in = x setze, dann erfordert LaTeX so weit ich weiß zwangsläufig ein Tagesdatum.

In meinem Diagramm benötige ich lediglich die Angabe mm:ss (Minuten:Sekunden) sowie die Messwerte, das Datum ist völlig irrelevant. Gerne darf auch bei Erreichen einer vollen Stunde Minute 60 aufgeführt werden anstatt 01:00:00...

Wie könnte ich das denn lösen?

Ganz herzlichen Dank für Eure Unterstützung! :)

Viele Grüße
KloBoBBerLe

von esdd » Mi 23. Jul 2014, 10:07

Zitat aus dem erwähnten Abschnitt der Doku:
• \second will always be 00.
Wenn die Sekunden immer 00 sind, dann hilft schon deshalb die library (zumindest momentan) bei dem Problem nicht weiter.

von Ben » Di 22. Jul 2014, 20:27

Danke. Damit habe ichs am Anfang versucht. War leider nicht von Erfolg gekrönt. Das kann aber auch daran gelegen haben, dass ich es nicht richtig gemacht habe :)
Glücklicherweise funktioniert Elkes Lösung sehr gut.

Gruß

Ben

von prankenandi » Di 22. Jul 2014, 15:28

Hallo,

sollte das Zeitformat deines Datenloggers ein Zeitstempel (in Bezug auf Uhrzeit) sein, dann schau mal in PGFplot-Manual nach

4.22.2 Dates as Input Coordinates

Vielleicht ist dort etwas nützliches dabei?!?!


MfG

von Ben » Di 22. Jul 2014, 15:18

Wunderbar :D

Vielen Dank für die schnelle und kompetente Hilfe !

von esdd » Di 22. Jul 2014, 14:13

Ergänze
       xtick=data,
       xticklabels from table={mydata.csv}{X},
       xticklabel style={rotate=90,anchor=east},
bei den axis Optionen und ändere bei den plots x=X zu
x expr=\coordindex
Kompletter Code:
\begin{filecontents}{mydata.csv}
X   Y1   Y2   Y3   Y4 
 00:00.0   25   25   25   24.9 
 00:00.5   25   25   25   24.9 
 00:01.0   25.2   25.1   25.1   25 
 00:01.5   25.7   25.2   25.5   25.2 
 00:02.0   26.7   25.6   26.3   25.6 
 00:02.5   27.7   25.9   27.3   26.1 
 00:03.0   28.7   26.3   28.2   26.6 
 00:03.5   29.7   26.8   29.3   27.2 
 00:04.0   30.6   27.3   30.3   27.7 
 00:04.5   31.6   27.7   31.4   28.3 
 00:05.0   32.6   28.1   32.5   28.9 
 00:05.5   33.6   28.7   33.6   29.4 
 00:06.0   34.4   29.1   34.6   30.1 
 00:06.5   35.4   29.7   35.7   30.6 
 00:07.0   36.3   30.2   36.7   31.3 
 00:07.5   37.2   30.7   37.7   31.8 
 00:08.0   38.1   31.3   38.6   32.4 
 00:08.5   38.9   31.7   39.6   33 
 00:09.0   39.7   32.3   40.4   33.7 
 00:09.5   40.5   32.8   41.3   34.2 
 00:10.0   41.3   33.3   42.2   34.8 
\end{filecontents}

\documentclass[paper=a4,parskip]{scrreprt} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.9} 
\pgfplotsset{/pgf/number format/use comma} 

\begin{document} 

    \begin{figure}[htb] 
       \centering 
       \begin{tikzpicture} 
       \begin{axis}[width=0.6\textheight,       
       height=0.4\textheight, 
       xlabel={Zeit [mm:ss.0]}, 
       ylabel={Temperatur[Celsius]}, 
       ymajorgrids,
       xtick=data,
       xticklabels from table={mydata.csv}{X},
       xticklabel style={rotate=90,anchor=east},
       legend pos=outer north east, 
       legend cell align=left, 
       legend style={draw=none}] 
       \addplot[color=black,mark=none] table [x expr=\coordindex,y=Y1] {mydata.csv};       
       \addplot[color=blue,mark=none] table [x expr=\coordindex,y=Y2] {mydata.csv}; 
       \addplot[color=red,mark=none] table [x expr=\coordindex,y=Y3] {mydata.csv}; 
       \addplot[color=red,mark=none] table [x expr=\coordindex,y=Y4] {mydata.csv}; 
       \legend{S1.1, S1.2, S2.1, S2.2} 
       \end{axis} 
       \end{tikzpicture} 
    \end{figure} 
\end{document} 
Um nur die xticklabel mit vollen Sekunden anzeigen zu lassen, fällt mir gerade nichts besseres ein als eine weitere Tabelle zu verwenden.
\begin{filecontents}{mydata.csv}
X   Y1   Y2   Y3   Y4 
 00:00.0   25   25   25   24.9 
 00:00.5   25   25   25   24.9 
 00:01.0   25.2   25.1   25.1   25 
 00:01.5   25.7   25.2   25.5   25.2 
 00:02.0   26.7   25.6   26.3   25.6 
 00:02.5   27.7   25.9   27.3   26.1 
 00:03.0   28.7   26.3   28.2   26.6 
 00:03.5   29.7   26.8   29.3   27.2 
 00:04.0   30.6   27.3   30.3   27.7 
 00:04.5   31.6   27.7   31.4   28.3 
 00:05.0   32.6   28.1   32.5   28.9 
 00:05.5   33.6   28.7   33.6   29.4 
 00:06.0   34.4   29.1   34.6   30.1 
 00:06.5   35.4   29.7   35.7   30.6 
 00:07.0   36.3   30.2   36.7   31.3 
 00:07.5   37.2   30.7   37.7   31.8 
 00:08.0   38.1   31.3   38.6   32.4 
 00:08.5   38.9   31.7   39.6   33 
 00:09.0   39.7   32.3   40.4   33.7 
 00:09.5   40.5   32.8   41.3   34.2 
 00:10.0   41.3   33.3   42.2   34.8 
\end{filecontents}

\begin{filecontents}{mylabel.csv}
X
 00:00.0
 00:01.0
 00:02.0
 00:03.0
 00:04.0
 00:05.0
 00:06.0
 00:07.0
 00:08.0
 00:09.0
 00:10.0
\end{filecontents}

\documentclass[paper=a4,parskip]{scrreprt} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.9} 
\pgfplotsset{/pgf/number format/use comma} 

\begin{document} 

    \begin{figure}[htb] 
       \centering 
       \begin{tikzpicture} 
       \begin{axis}[width=0.6\textheight,       
       height=0.4\textheight, 
       xlabel={Zeit [mm:ss.0]}, 
       ylabel={Temperatur[Celsius]}, 
       ymajorgrids,
       xtick={0,2,...,100},
       xticklabels from table={mylabel.csv}{X},,
       xticklabel style={rotate=90,anchor=east},
       legend pos=outer north east, 
       legend cell align=left, 
       legend style={draw=none}] 
       \addplot[color=black,mark=none] table [x expr=\coordindex,y=Y1] {mydata.csv};       
       \addplot[color=blue,mark=none] table [x expr=\coordindex,y=Y2] {mydata.csv}; 
       \addplot[color=red,mark=none] table [x expr=\coordindex,y=Y3] {mydata.csv}; 
       \addplot[color=red,mark=none] table [x expr=\coordindex,y=Y4] {mydata.csv}; 
       \legend{S1.1, S1.2, S2.1, S2.2} 
       \end{axis} 
       \end{tikzpicture} 
    \end{figure} 
\end{document} 
Gruß
Elke

x-Achse im Format mm:ss.0

von Ben » Di 22. Jul 2014, 11:25

Hallo,

ich möchte von einen Messschrieb eines Datenloggers ein Diagramm erstellen. Es handelt sich um über 2000 Datensätze. Hier ein kleiner Auszug:
X	Y1	Y2	Y3	Y4
00:00.0	25	25	25	24.9
00:00.5	25	25	25	24.9
00:01.0	25.2	25.1	25.1	25
00:01.5	25.7	25.2	25.5	25.2
00:02.0	26.7	25.6	26.3	25.6
00:02.5	27.7	25.9	27.3	26.1
00:03.0	28.7	26.3	28.2	26.6
00:03.5	29.7	26.8	29.3	27.2
00:04.0	30.6	27.3	30.3	27.7
00:04.5	31.6	27.7	31.4	28.3
00:05.0	32.6	28.1	32.5	28.9
00:05.5	33.6	28.7	33.6	29.4
00:06.0	34.4	29.1	34.6	30.1
00:06.5	35.4	29.7	35.7	30.6
00:07.0	36.3	30.2	36.7	31.3
00:07.5	37.2	30.7	37.7	31.8
00:08.0	38.1	31.3	38.6	32.4
00:08.5	38.9	31.7	39.6	33
00:09.0	39.7	32.3	40.4	33.7
00:09.5	40.5	32.8	41.3	34.2
00:10.0	41.3	33.3	42.2	34.8
Ich möchte vier Grafen (Y1,Y2,Y3,Y4) über der X-Achse (X) im Format mm:ss.0 darstellen. Für andere Diagramme habe ich bisher mit pgfplots gearbeitet. Allerdings bekomm ich es damit nicht hin.

Hier noch mein Versuch:
\documentclass[paper=a4,parskip]{scrreprt}
\usepackage{graphicx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\pgfplotsset{/pgf/number format/use comma}

\begin{document}

	\begin{figure}[htb]
		\centering
		\begin{tikzpicture}
		\begin{axis}[width=0.6\textheight, 		
		height=0.4\textheight, 
		xlabel={Zeit [mm:ss.0]},
		ylabel={Temperatur[Celsius]},
		ymajorgrids,
		legend pos=outer north east,
		legend cell align=left,
		legend style={draw=none}]
		\addplot[color=black,mark=none] table [x=X,y=Y1] {Daten/ErwaermUndAbkuehlkurve.csv};		
		\addplot[color=blue,mark=none] table [x=X,y=Y2] {Daten/ErwaermUndAbkuehlkurve.csv};
		\addplot[color=red,mark=none] table [x=X,y=Y3] {Daten/ErwaermUndAbkuehlkurve.csv};
		\addplot[color=red,mark=none] table [x=X,y=Y4] {Daten/ErwaermUndAbkuehlkurve.csv};
		\legend{S1.1, S1.2, S2.1, S2.2}
		\end{axis}
		\end{tikzpicture}
	\end{figure}
\end{document} 
Hat jemand einen Lösungsvorschlag für mich?

Gruß

Ben

Nach oben