在我制作的一些散点图中,我想用图钉标记每个点。我通过在环境内的 but\node
之后添加元素并使用属性来实现这一点:\addplot
axis
pin
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates
{
(1,1)
(2,2.5)
(3,2.9)
(4,4.1)
};
\node[pin = texta] at (axis cs:1,1) {};
\node[pin = \small textb] at (axis cs:2,2.5) {};
\end{axis}
\end{tikzpicture}
\end{document}
要调整单个图钉的字体,我只需输入相应的命令,如演示中所示。但是,我理想情况下希望一次性设置所有“图钉文本”的样式。但是,我使用 等的尝试完全every pin
失败every pin edge
了。只需执行
\tikzset{font = \small}
失败,因为现在所有文本都绘制到了轴的末端,这意味着这会“逃逸”并影响轴标签。到目前为止,我能想到的最好的办法是
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\tikzset{Pin/.style = {font = \small}}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates
{
(1,1)
(2,2.5)
(3,2.9)
(4,4.1)
};
\node[pin = {[Pin]texta}] at (axis cs:1,1) {};
\node[pin = {[Pin]textb}] at (axis cs:2,2.5) {};
\end{axis}
\end{tikzpicture}
\end{document}
它确实将细节移动到了一个地方但仍然需要对每个图钉重复使用该样式。
有没有一种“更干净”的方式来做我想做的事情?(如果没有,这也是一个有效的答案。)
答案1
你可以使用类似
every pin/.append style={font=\small}
完整示例:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\tikzset{
every pin/.append style={font=\small}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates
{
(1,1)
(2,2.5)
(3,2.9)
(4,4.1)
};
\node[pin = texta] at (axis cs:1,1) {};
\node[pin = textb] at (axis cs:2,2.5) {};
\end{axis}
\end{tikzpicture}
\end{document}