pgfplots: 간격에 주석을 추가하는 방법은 무엇입니까?

pgfplots: 간격에 주석을 추가하는 방법은 무엇입니까?

[2, 4]다음 MWE의 경우 원하는 출력에 표시된 대로 간격(예: )에 주석을 달고 싶습니다 .

추가적으로 수직선과 수평 화살표의 스타일을 지정하는 방법도 알아야 합니까?

\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
    xmin=0,xmax=5
    ]
        \addplot[mark=none,blue] {x^2};

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

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

답변1

주석 텍스트의 경우 라이브러리를 사용할 수 있습니다 decorations.text tikz.

스타일 지정을 위해 명령에 필요한 옵션을 추가할 수 있습니다 \draw. 예는 다음과 같습니다.

\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.text}    

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    xmin=0,xmax=5
    ]
    \addplot[mark=none,blue] {x^2};
    \draw[red, dashed] (2, \pgfkeysvalueof{/pgfplots/ymin}) -- (2, \pgfkeysvalueof{/pgfplots/ymax});
    \draw[green, thick, dotted] (4, \pgfkeysvalueof{/pgfplots/ymin}) -- (4, \pgfkeysvalueof{/pgfplots/ymax});
    \draw[blue, very thick, {Stealth}-{Stealth}, postaction={decoration={raise=3pt, text along path, text={some text},text align=center}, decorate}] (2,5) -- (4,5);
    \end{axis}
    \end{tikzpicture}
\end{document}

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

편집하다:

OP의 요구에 따라 \myline수직선에 대한 스타일( \myarrow간격의 화살표에 대한 스타일도 있음)을 만들었습니다.

게다가 나는 tikz매니아로 과장했다. Torbjørn T.가 올바르게 지적했듯이 a를 사용하는 것은 text along path직선에 과잉입니다. 라이브러리가 필요 없이 경로 위에 노드를 놓기만 하면 됩니다 decorations.text.

\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usetikzlibrary{arrows.meta}
\tikzset{%
    myline/.style = {green, very thick, dashed},
    myarrow/.style = {blue, very thick, {Stealth}-{Stealth}},
}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    xmin=0,xmax=5
    ]
    \addplot[mark=none,blue] {x^2};
    \draw[myline] (2, \pgfkeysvalueof{/pgfplots/ymin}) -- (2, \pgfkeysvalueof{/pgfplots/ymax});
    \draw[myline] (4, \pgfkeysvalueof{/pgfplots/ymin}) -- (4, \pgfkeysvalueof{/pgfplots/ymax});
    \draw[myarrow] (2,5) -- node[above] {some text} (4,5);
    \end{axis}
    \end{tikzpicture}
\end{document}

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

두 번째 편집:

저는 화살표의 초기 , 최종 및 높이 pic세 가지를 사용 하여 을 만들었습니다 (이 마지막 값은 고정 값으로 대체될 수 있으며, 항상 동일하다면 2개만 사용하도록 수정 ).argsxxypicargs

\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usetikzlibrary{arrows.meta}
\tikzset{%
    myline/.style = {green, very thick, dashed},
    myarrow/.style = {blue, very thick, {Stealth}-{Stealth}},
    pics/myint/.style n args={3}{code={%  
            \draw[myline] (#1, \pgfkeysvalueof{/pgfplots/ymin}) -- (#1, \pgfkeysvalueof{/pgfplots/ymax});
            \draw[myline] (#2, \pgfkeysvalueof{/pgfplots/ymin}) -- (#2, \pgfkeysvalueof{/pgfplots/ymax});
            \draw[myarrow] (#1,#3) -- node[above] {some text} (#2,#3);
    }},
}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    xmin=0,xmax=5
    ]
    \addplot[mark=none,blue] {x^2};
    \pic {myint={2}{4}{5}};
    \end{axis}
    \end{tikzpicture}
\end{document} 

물론 를 사용하면 \pic {myint={2}{4}{5}};출력은 이전 출력과 동일합니다.

관련 정보