PGFPlots: 다양한 레이어에 플롯을 그리고 배열하는 방법 이해하기

PGFPlots: 다양한 레이어에 플롯을 그리고 배열하는 방법 이해하기

이전 질문을 살펴보았습니다. [1,2,], 하지만 여전히 서로 다른 레이어에 플롯을 그리는 방법과 그리기 순서를 변경하는 방법을 알 수 없었습니다.

이 MWE의 경우, 플롯 명령/정의를 동일한 순서로 유지하면서 범례 항목이 동일한 순서를 갖도록 세 플롯의 표시 순서를 변경하는 방법을 알아낼 수 있다면 감사하겠습니다. 가능한.

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
            legend style={
                at={([yshift=30pt]0.5,1)},
                anchor=north},
            legend columns=-1,
            xmin=0, xmax=10,
            ymin=0, ymax=10,
        ]
        %
        \addplot [red,      line width = 5pt,   domain=0:10]    {x}; \addlegendentry{$x$}   
        \addplot [black,    line width = 5pt,   domain=0:10]    {(x-5)^2}; \addlegendentry{$(x-5)^2$}
        \addplot [yellow,   line width = 5pt,   domain=0:10]    {10-(x-5)^2}; \addlegendentry{$10-(x-5)^2$}
    \end{axis}
\end{tikzpicture}

\end{document}

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

답변1

실제로 다른 레이어에 을 플롯해야 하는 경우 \addplot다음 코드를 살펴보세요.

솔루션 작동 방식에 대한 자세한 내용은 코드의 주석을 살펴보세요.

% used PGFPlots v1.14
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \pgfplotsset{
        % define the layers you need.
        % (Don't forget to add `main' somewhere in that list!!)
        layers/my layer set/.define layer set={
            background,
            main,
            foreground
        }{
            % you could state styles here which should be moved to
            % corresponding layers, but that is not necessary here.
            % That is why we don't state anything here
        },
        % activate the newly created layer set
        set layers=my layer set,
    }
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            legend style={
                % (it is better to use `anchor=south' because then the gap
                % between the top axis line and the lower border of the
                % legend is independent of the height of the legend box)
                at={([yshift=10pt]0.5,1)},
                anchor=south,
            },
            legend columns=-1,
            xmin=0, xmax=10,
            ymin=0, ymax=10,
            % moved common `\addplot' options here
            domain=0:10,
            every axis plot post/.append style={
                line width=5pt,
            },
            % change `clip mode' to `individual' to avoid unwanted clipping
            clip mode=individual,
        ]
            \addplot [
                red,
                % and with `on layer' you can state the layer where the
                % plot should be drawn on
                on layer=foreground,
            ] {x};
                \addlegendentry{$x$}
            % because we don't state a layer here, this plot will be drawn
            % on layer `main'
            \addplot [black] {(x-5)^2};
                \addlegendentry{$(x-5)^2$}
            \addplot [
                yellow,
                on layer=background,
            ] {10-(x-5)^2};
                \addlegendentry{$10-(x-5)^2$}
        \end{axis}
    \end{tikzpicture}
\end{document}

위 코드의 결과를 보여주는 이미지

관련 정보