Pgfplots: ybar 간격으로 xtick이 무시됩니다.

Pgfplots: ybar 간격으로 xtick이 무시됩니다.

하루 동안 수요에 대한 막대 그래프를 만드는 데 문제가 있습니다. 내 x 좌표는 "자정으로부터의 분" 단위이지만 x축에 내가 지정한 지점의 시간을 표시하고 싶습니다(예: 390분이 아닌 오전 6시 30분). 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}

여기에 이미지 설명을 입력하세요

관련 정보