如何在坐标系中指定节点的位置?我尝试了以下方法,但三角形不是以 (1.1,0.2) 为中心,而是放置在其旁边。请问我遗漏了什么?
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major]
\addplot+ coordinates{(1, 0.2)};
\node[color=red] at (axis cs:1.1, 0.2) {\pgfuseplotmark{triangle*}};
\end{axis}
\end{tikzpicture}
\end{document}
事实上,最终我想提示三角形的坐标为 (1.1,0.2)。这个容易实现吗?
答案1
轻松添加\(...\)
。您可以{\pgfuseplotmark{triangle*}}
用替换{\(\pgfuseplotmark{triangle*}\)}
。
结果:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major]
\addplot+ coordinates{(1, 0.2)};
% \node[color=red] at (axis cs:1.1, 0.2) {\pgfuseplotmark{triangle*}}; old
\node[color=green,scale=1] at (axis cs:1.1, 0.2) {\(\pgfuseplotmark{triangle*}\)} ; %<-new line
\end{axis}
\end{tikzpicture}
\end{document}
答案2
当我使用运行你的代码时pgfplots 2016/08/10 v1.14
,三角形是居中。请检查您是否使用了最新版本。
为了用三角形的尖端定位三角形,您可以定义自己的绘图标记mytriangle
( 的修改版triangle*
):
\makeatletter
\newcommand\pgf@plot@mark@mytriangle
{\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
\pgfpathlineto{\pgfqpointpolar{-60}{2\pgfplotmarksize}}%
\pgfpathlineto{\pgfqpointpolar{-120}{2\pgfplotmarksize}}%
\pgfpathclose\pgfusepathqfillstroke
}
\makeatother
\documentclass{standalone}
\usepackage{pgfplots}
\makeatletter
\newcommand\pgf@plot@mark@mytriangle
{\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}%
\pgfpathlineto{\pgfqpointpolar{-60}{2\pgfplotmarksize}}%
\pgfpathlineto{\pgfqpointpolar{-120}{2\pgfplotmarksize}}%
\pgfpathclose\pgfusepathqfillstroke
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major]
\addplot+ coordinates{(1, 0.2)};
\node[color=red] at (axis cs:1.1, 0.2) {\pgfuseplotmark{mytriangle}};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
您不做这样的标记有什么特殊原因吗?
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major]
\addplot[mark=triangle*,red] coordinates{(1, 0.2)};
\end{axis}
\end{tikzpicture}
\end{document}
如果你坚持使用节点,那么你的例子将按pgfplots 1.14
预期工作。三角形以给定的坐标为中心:
\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major]
\addplot+ coordinates{(1, 0.2)};
\node[color=red] at (1.1, 0.2) {\pgfuseplotmark{triangle*}};
\end{axis}
\end{tikzpicture}
\end{document}
附录:
节点完全居中(要看到这一点,请draw
向节点添加选项),但节点内容不一定位于节点中央。这似乎是您的问题,与 无关pgfplots
。
因此,如果您喜欢使用节点,请查看以下示例(其中节点具有三角形)是否是可接受的解决方案:
\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepgflibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major]
\addplot coordinates{(1, 0.2)};
\node[regular polygon, regular polygon sides=3,
fill=red,
semitransparent,
inner sep=3pt] at (1.1, 0.2) {};% fore real use 'inner sep=1.2pt' would be more appropriate
\end{axis}
\end{tikzpicture}
\end{document}
如果您有更多这样的节点,您可以为其定义样式,例如:
\tikzset{mytrianglemark/.style={regular polygon, regular polygon sides=3,
fill=red,inner sep=1.2pt}
并存储在前言或之后\begin{tikzpicture}