我在一天中建立需求長條圖時遇到問題。我的 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
在軸選項中添加一個,以便在軸上有一些喘息空間。
要使用圖表的預設顏色,您可以使用通用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}