Ich habe ein Problem mit der Erstellung eines Balkendiagramms der Nachfrage während eines Tages. Meine X-Koordinaten sind in „Minuten ab Mitternacht“, aber ich möchte die Tageszeit auf der X-Achse an den von mir angegebenen Stellen anzeigen (z. B. 6:30 Uhr statt 390 Minuten). xtick
und xticklabels
sollte das für mich tun. Und das tun sie, wenn ich nicht habe ybar interval=1
, aber dann ist es nicht mehr die richtige Art von Diagramm.
Mein Code ist der folgende:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
xtick={390,540,720,900,1020},
xticklabels={6:30,9:00,12:00,15:00,17:00},
ylabel=Required staff,
xlabel=Time of day,
ybar interval=1,
width=0.8\textwidth,
height=5cm,
axis lines=left,
ymin=0
]
\addplot
coordinates {(390,1) (450,2) (510,3) (570,6) (720,3) (735,2) (780,3) (795,4) (930,2) (960,1) (1020,1)};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
und es erzeugt:
Das Auskommentieren ybar interval=1,
führt zu:
Antwort1
Im Handbuch (Seite 87 und 320 in meiner Version) steht, dass dies ybar interval
nur pro Plot installiert wird. Es bringt die Definition der Teilstriche durcheinander, wenn Sie es in der Achse festlegen.
Ich würde enlarge x limits=0.05, enlarge y limits=upper
den Achsenoptionen ein hinzufügen, um auf der Achse etwas Spielraum zu haben.
Um die Standardfarbgebung für die Diagramme zu verwenden, können Sie den allgemeinen ybar
Stil verwenden und dann addplot+
:
\documentclass{article}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
ybar, %% installs bar cycle list also
xtick={390,540,720,900,1020},
xticklabels={6:30,9:00,12:00,15:00,17:00},
ylabel=Required staff,
xlabel=Time of day,
width=0.8\textwidth,
height=5cm,
axis lines=left,
ymin=0,
enlarge x limits=0.05,
enlarge y limits=upper,
]
\addplot+ [ybar interval]
coordinates {(390,1) (450,2) (510,3) (570,6) (720,3) (735,2) (780,3) (795,4) (930,2) (960,1) (1020,1)};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
Antwort2
Sie könnten eine zweite axis
Umgebung mit denselben Abmessungen hinzufügen:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}% <- current version is 1.14
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\pgfplotsset{
xmin=390,xmax=1020,
width=0.8\textwidth,
height=5cm,
axis lines=left,
ymin=0,ymax=6
}
\begin{axis}[
xtick={390,540,720,900,1020},
xticklabels={6:30,9:00,12:00,15:00,17:00},
ylabel=Required staff,
xlabel=Time of day
]
\end{axis}
\begin{axis}[
axis lines=none,
ybar interval=1,
xtick=\empty,
]
\addplot
coordinates {
(390,1) (450,2) (510,3) (570,6) (720,3) (735,2)
(780,3) (795,4) (930,2) (960,1) (1020,1)
};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}