다음 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
.