我只想标记y
外部文件数据中的坐标的最大值。
我尝试使用 的功能calc
,但是却无法获得它;我想知道我是否可以使用一个函数maximum
。
我见过类似的解决问题的方法,使用pst
这里,和#1
。我如何在我的代码中实现pgfplots
。
这是我的图表的代码,我正在使用pgfplots
和tikz
包:
\begin{figure}[!hbp]
\begin{tikzpicture}
\begin{axis}[
xlabel={X},
ylabel={Y},
xmax=50,
xmin=0,
ymax=.5,
ymin=-.5,
width=15cm,
height=5cm,
]
\addplot[blue,smooth]table{sample.table};
\end{axis}
\end{tikzpicture}
\caption{Caption}
\end{figure}
答案1
这里有一个选项;mark max
样式mark min
接收一个可选参数,允许使用最大值的坐标指定节点的位置(默认值是above
最大值和below
最小值):
\documentclass{article}
\usepackage{pgfplots}
\makeatletter
\pgfplotsset{
compat=1.12,
/tikz/max node/.style={
anchor=south,
},
/tikz/min node/.style={
anchor=north,
name=minimum
},
mark min/.style={
point meta rel=per plot,
visualization depends on={x \as \xvalue},
scatter/@pre marker code/.code={%
\ifx\pgfplotspointmeta\pgfplots@metamin
\def\markopts{}%
\coordinate (minimum);
\node[#1] {(\pgfmathprintnumber[fixed]{\xvalue},\pgfmathprintnumber[fixed]{\pgfplotspointmeta})};%
\else
\def\markopts{mark=none}
\fi
\expandafter\scope\expandafter[\markopts,every node near coord/.style=green]
},%
scatter/@post marker code/.code={%
\endscope
},
scatter,
},
mark min/.default={below},
mark max/.style={
point meta rel=per plot,
visualization depends on={x \as \xvalue},
scatter/@pre marker code/.code={%
\ifx\pgfplotspointmeta\pgfplots@metamax
\def\markopts{}%
\coordinate (maximum);
\node[#1] {(\pgfmathprintnumber[fixed]{\xvalue},\pgfmathprintnumber[fixed]{\pgfplotspointmeta})};%
\else
\def\markopts{mark=none}
\fi
\expandafter\scope\expandafter[\markopts]
},%
scatter/@post marker code/.code={%
\endscope
},
scatter
},
mark max/.default={above},
}
\makeatother
\usepackage{filecontents}
\begin{filecontents*}{sample.table}
x y
1 0.2
10 0.1
20 0.4
30 -0.3
40 0.3
50 -0.2
\end{filecontents*}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
xlabel={X},
ylabel={Y},
xmax=50,
xmin=0,
ymax=.5,
ymin=-.5,
width=15cm,
height=5cm,
]
\addplot[blue,smooth,mark max=right]table{sample.table};
\end{axis}
\end{tikzpicture}
\caption{Caption}
\end{figure}
\end{document}
我使用了 Jake 代码的一个变体his answer
到如何使用 pgfplots 和 scatter 自动标记局部极值?