Pgfplots:xtick 被 ybar 間隔忽略

Pgfplots:xtick 被 ybar 間隔忽略

我在一天中建立需求長條圖時遇到問題。我的 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}

在此輸入影像描述

相關內容