PGFPLOTS는 빈 범례 항목이 있는 전치된 범례입니다.

PGFPLOTS는 빈 범례 항목이 있는 전치된 범례입니다.

다음 MWE에 대해 빈(건너뛴) 항목이 있는 3x3 모양의 전치된 범례 행렬에 범례 항목을 올바르게 배치하는 데 문제가 있습니다.

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[%
      legend columns = 3,
      transpose legend,
    ]

    \addplot {-x+1};\addlegendentry{A}
    \addplot {-x+2};\addlegendentry{B}
    \addplot {-x+3};\addlegendentry{C}
    \addplot {-x+4};\addlegendentry{D}
    \addplot {-x+5};\addlegendentry{E}
    \addlegendimage{empty legend}\addlegendentry{skip me}
    \addplot {-x+7};\addlegendentry{F}
    %\addlegendimage{empty legend}\addlegendentry{skip me}
    %\addlegendimage{empty legend}\addlegendentry{skip me}

    \end{axis}
  \end{tikzpicture}
\end{document}

내가 얻는 것은 다음과 같습니다.

실패한 예

하지만 내가 기대하는 것은:

A   D   F
B   E
C

마지막 두 줄의 주석 처리를 제거하면 예상한 결과를 얻을 수 있다는 것을 알았습니다 empty legend.

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[%
      legend columns = 3,
      transpose legend,
    ]

    \addplot {-x+1};\addlegendentry{A}
    \addplot {-x+2};\addlegendentry{B}
    \addplot {-x+3};\addlegendentry{C}
    \addplot {-x+4};\addlegendentry{D}
    \addplot {-x+5};\addlegendentry{E}
    \addlegendimage{empty legend}\addlegendentry{skip me}
    \addplot {-x+7};\addlegendentry{F}
    \addlegendimage{empty legend}\addlegendentry{skip me} % <-- Uncommented
    \addlegendimage{empty legend}\addlegendentry{skip me} % <-- Uncommented

    \end{axis}
  \end{tikzpicture}
\end{document}

이를 통해 예상되는 결과를 얻습니다.

실제 사례

초기 문제에 대한 해결책을 찾았지만 이것이 예상되는 동작인지 궁금합니다!? 에서 관련 내용을 찾을 수 없었습니다.PGFPLOTS 문서.

답변1

이것이 귀하의 요구 사항을 충족하는 경우 왼쪽의 확인 표시를 선택하십시오.

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

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

  \begin{tikzpicture}
    \begin{axis}[%
      legend columns = 3,
      transpose legend,
    ]

    \addplot {-x+1};\addlegendentry{A}
    \addplot {-x+2};\addlegendentry{B}
    \addplot {-x+3};\addlegendentry{C}
    \addplot {-x+4};\addlegendentry{D}
    \addplot {-x+5};\addlegendentry{E}
    \addlegendimage{empty legend}\addlegendentry{}
    \addplot {-x+7};\addlegendentry{F}
    \addlegendimage{empty legend}\addlegendentry{} % <-- Uncommented
    \addlegendimage{empty legend}\addlegendentry{} % <-- Uncommented

    \end{axis}
  \end{tikzpicture}
\end{document}

다음과 같은 방식으로 범례의 앵커를 지정해야 한다는 점을 명심하세요.

legend style={at={(0.03,0.5)},anchor=west}

앵커는 로 정의한 좌표에 범례 상자의 어떤 점이 배치될지 정의합니다 at={(<>,<>)}.

at={(<>,<>)}삽입하는 좌표 만 사용하는 경우 점이 (0,0)왼쪽 하단 각도와 (1,1)오른쪽 상단 각도인 축 상자의 좌표입니다.

대신 사용하면 at={(axis cs:<>,<>)}플롯과 동일한 축의 실제 좌표를 지정합니다.

legend style={at={(axis cs:0.5,1)},anchor=south west}

또는

\begin{axis}[legend pos=north west]

또는

\begin{axis}[legend style={at={(0.5,-0.1)},anchor=north}]

또는

\begin{axis}
[%
    axis lines = middle,
    xlabel = $x$,
    ylabel = {$f(x)$},
    enlarge y limits=upper,
    yticklabel style = {font=\tiny},
    xticklabel style = {font=\tiny},
    legend style={xshift=1.5cm},
    thick,
]%

기본 위치는 입니다 north east.

관련 정보