pgfplots:如何註解區間?

pgfplots:如何註解區間?

對於以下 MWE,我想註解一個間隔(例如[2, 4]),如所需輸出所示。

另外,我需要知道如何設計垂直線和水平箭頭的樣式?

\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. 正確指出的那樣,使用 atext 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包含三個args:初始值x、最終值x和箭頭高度的值y(最後一個可以用固定值替換,如果它始終相同,則將其修改pic為僅使用兩個args)。

\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}};,輸出與前一個相同。

相關內容