Для следующего 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}
Редактировать:
Как того требует ОП, я создал стиль \myline
для вертикальных линий (а также \myarrow
для стрелки интервала).
Более того, я преувеличил с tikz
манией. Как правильно заметил Торбьёрн Т., использование 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
с тремя параметрами 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}};
результат будет таким же, как и в предыдущем случае.