Nachtrag

Nachtrag

Ich möchte die Zeit anzeigen auf demjAchse. Ich habe diesen Code entwickelt, aber er zeigt keine Ausgabe.

\usepackage{filecontents}
\begin{filecontents}{mwe.csv}
Time,a,b
 00:00,0,10
 10:30,6,4
 11:30,5,5
 12:30,3,7
 13:30,2,8
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
Time coordinates in=x, 
xticklabel={\begin{turn}{45}\hour.\minute \end{turn}\\},
x tick label style={align=center},
ymajorgrids,
xmin={00:00},
xmax={21:30},
ymin=00:00,
legend pos=north west,]
\addplot [ycomb,color=blue] table [col sep=comma,trim cells=true,y=a] {mwe.csv}; \addlegendentry{a}
\addplot [ycomb,color=red]  table [col sep=comma,trim cells=true,y=b] {mwe.csv}; \addlegendentry{b}
\end{axis}
\end{tikzpicture}
\end{document}

Antwort1

Es sieht so aus, als ob Sie versuchen, die dateplotBibliothek zu verwenden, aber wie im Handbuch beschrieben,brauchenum ein Datum anzugeben, nicht nur die Uhrzeit:

Bildbeschreibung hier eingeben

Beachten Sie auch, dass es lauten sollte date coordinates in=xund nicht Time coordinates in=x. Nachdem Sie der Eingabedatei ein Datum hinzugefügt und die Werte für xmin/ xmaxentsprechend angepasst haben:

\begin{filecontents}{mwe.csv}
Time,a,b
2020-1-1 00:00,0,10
2020-1-1 10:30,6,4
2020-1-1 11:30,5,5
2020-1-1 12:30,3,7
2020-1-1 13:30,2,8
\end{filecontents}

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x, 
xticklabel={\hour.\minute},
x tick label style={align=center,rotate=45},
ymajorgrids,
xmin={2020-1-1 00:00},
xmax={2020-1-1 21:30},
legend pos=north west
]

\addplot [ycomb,color=blue] table [col sep=comma,y=a] {mwe.csv};
 \addlegendentry{a}
\addplot [ycomb,color=red]  table [col sep=comma,y=b] {mwe.csv};
 \addlegendentry{b}
\end{axis}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Nachtrag

Wenn Sie dagegen versuchen, die Antwort von Symbol 1 zu verwenden,So erstellen Sie ein Datums- und Zeitdiagramm mit TikZ und pgfplotsdann sehen Sie sich den Code unten an. Es wäre toll gewesen, wenn Sie dies in der Frage erwähnt hätten (obwohl ich vermutlich hätte warten können, bis Sie mehr Informationen geliefert hätten, wie von Frougon angefordert ...).

Sie müssen dennoch sicherstellen, dass Sie den richtigen Namen für den Stil verwenden. Der Code von Symbol 1 definiert time coordinates in, Sie haben verwendet Time coordinates in. Dabei wird zwischen Groß- und Kleinschreibung unterschieden, Sie müssen also bei der Stildefinition und -verwendung die gleiche Schreibweise verwenden.

Mir fällt auf, dass die Legende leer ist. Stefan Pinnow zeigt, wie man eine nützlichere Legende für ycombPlots inhttps://tex.stackexchange.com/a/357469/.

\begin{filecontents*}{mwe.csv}
Time,a,b
00:00,0,10
10:30,6,4
11:30,5,5
12:30,3,7
13:30,2,8
\end{filecontents*}

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}

% the following is from https://tex.stackexchange.com/a/288225/
\def\pgfplotslibdateplothour:minutetofloat#1:#2.{
    \pgfmathparse{#1+#2/60}
}
\def\pgfplotslibdateplofloattothour:minute#1.{
    \pgfmathsetmacro\hour{int(floor(#1))}
    \pgfmathsetmacro\minute{int((#1-\hour)*60)}
    \ifnum\hour<10\edef\hour{0\hour}\fi
    \ifnum\minute<10\edef\minute{0\minute}\fi
}
\pgfplotsset{
    /pgfplots/time coordinates in/.code={%
        \pgfkeysdef{/pgfplots/#1 coord trafo}{%
            \pgfplotslibdateplothour:minutetofloat##1.
        }
        \pgfkeysdef{/pgfplots/#1 coord inv trafo}{
            \pgfplotslibdateplofloattothour:minute##1.
        }
    }
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
time coordinates in=x,
xticklabel={\hour.\minute},
x tick label style={align=center,rotate=45},
ymajorgrids,
xmin={00:00},
xmax={21:30},
legend pos=north west,
]
\addplot [ycomb, draw=blue] table [col sep=comma,trim cells=true,y=a] {mwe.csv};
\addlegendentry{a}

\addplot [ycomb,color=red]  table [col sep=comma,trim cells=true,y=b] {mwe.csv};
\addlegendentry{b}

\end{axis}
\end{tikzpicture}
\end{document}

Antwort2

Wie Frougon erwähnt, ist Ihr Code noch lange nicht vollständig. Vielleicht geht das Folgende in die richtige Richtung.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{dateplot}
\usepackage{filecontents}
\begin{filecontents}{mwe.csv}
Time,a,b
 00:00,0,10
 10:30,6,4
 11:30,5,5
 12:30,3,7
 13:30,2,8
\end{filecontents}

\usepackage{xfp}
% from https://tex.stackexchange.com/a/445564/121799
\def\marmottimeparseaux#1:#2xxx{#1* 60 + #2}
\ExplSyntaxOn
\cs_new:Nn \marmot_timeparse:n { \marmottimeparseaux #1xxx }
\newcommand\TimeParse[1]{\exp_args:Nf\marmot_timeparse:n {#1}}
\ExplSyntaxOff
\pgfplotsset{
    /pgfplots/ycomb legend/.style={
        /pgfplots/legend image code/.code={%
            \path (0cm,0cm) (0.6cm,0.3cm);  
            \draw [#1] (0.3cm,-0.1cm) -- (0.3cm,0.2cm);},
    },
}


\begin{document}
\begin{tikzpicture}
\begin{axis}[ycomb,ycomb legend,
xticklabel={\pgfmathtruncatemacro{\myhour}{\tick/60}%
\pgfmathtruncatemacro{\myminute}{\tick-\myhour*60}%
\myhour:\myminute},
x tick label style={align=center},
ymajorgrids,
xmin=\TimeParse{00:-10},
xmax=\TimeParse{21:30},
ymin=0,
legend pos=north west,]
\addplot [color=blue,xshift=-2pt] table [col sep=comma,y=a,
    x expr=\TimeParse{\thisrow{Time}}] {mwe.csv};   
\addlegendentry{a}
\addplot [ycomb,color=red,xshift=2pt]  table [col sep=comma,trim cells=true,y=b,
x expr=\TimeParse{\thisrow{Time}}] {mwe.csv}; 
\addlegendentry{b}
\end{axis}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen