У меня проблема с созданием столбчатой диаграммы спроса в течение дня. Мои x-координаты находятся в "минутах от полуночи", но я хочу показать время дня на оси x в указанных мной точках (например, 6:30 утра вместо 390 минут). xtick
и xticklabels
должны сделать это за меня. И они делают это, когда у меня нет ybar interval=1
, но тогда это уже не тот тип графика.
Мой код следующий:
\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}
и он производит:
Результаты ybar interval=1,
:
решение1
В руководстве (стр. 87 и 320 в моей версии) говорится, что это ybar interval
устанавливается только на основе графика. Это портит определение отметок, если вы устанавливаете его на оси.
Я бы добавил enlarge x limits=0.05, enlarge y limits=upper
к параметрам оси «a», чтобы иметь немного пространства для маневра на оси.
Чтобы использовать для диаграмм цветовую гамму по умолчанию, можно использовать общий ybar
стиль, а затем 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}
решение2
Вы можете добавить вторую axis
среду с такими же размерами:
\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}