我想使用图钉注释图表中的特定点。当我使用边缘时,->
效果很好。但如果我使用*-
例如,那么点的中心不在它应该在的位置。也许这是问题anchor
。以下是一个例子:
\documentclass[]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgflibrary{arrows}
\begin{document}
\begin{tikzpicture}
\begin{axis}%
[
axis y line = left,
axis x line = middle,
grid
]
\addplot[mark=none,domain=0:5] {x};
\node%
[
coordinate,
pin={[pin edge={*-}]50:{text}}
]
at (axis cs:2,1) {};
%
\node%
[
coordinate,
pin={[pin edge={red}]-50:{text}}
]
at (axis cs:2,1) {};
\end{axis}
\end{tikzpicture}
\end{document}
导致
特写显示了问题:
有任何想法吗?
答案1
发生这种情况是因为圆圈被视为箭头,因此它与线尾齐平。您可以使用语法shorten <
(参见修改*
并o
设置 tikz 箭头的样式,使其位于行尾的中心)来手动调整位置,或者您可以定义一个新的箭头(基于标准箭头)以将圆精确定位在指定的坐标上:
\documentclass[]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgflibrary{arrows}
\makeatletter
\pgfarrowsdeclare{center*}{center*}
{
\pgfutil@tempdima=0.4pt%
\advance\pgfutil@tempdima by.2\pgflinewidth%
\pgfutil@tempdimb=5.5\pgfutil@tempdima\advance\pgfutil@tempdimb by\pgflinewidth
\pgfarrowsleftextend{0pt}
\pgfutil@tempdimb=1.5\pgfutil@tempdima\advance\pgfutil@tempdimb by.5\pgflinewidth
\pgfarrowsrightextend{0pt}
}
{
\pgfutil@tempdima=0.4pt%
\advance\pgfutil@tempdima by.2\pgflinewidth%
\pgfsetdash{}{+0pt}
\pgfpathcircle{\pgfqpoint{0pt}{0pt}}{+4.5\pgfutil@tempdima}
\pgfusepathqfillstroke
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}%
[
axis y line = left,
axis x line = middle,
grid
]
\addplot[mark=none,domain=0:5] {x};
\node%
[
coordinate,
pin={[pin edge={center*-}]50:{text}}
]
at (axis cs:2,1) {};
%
\node%
[
coordinate,
pin={[pin edge={red}]-50:{text}}
]
at (axis cs:2,1) {};
\end{axis}
\end{tikzpicture}
\end{document}