我想用线来注释一个面片图,线的起点和终点分别以绝对极坐标和相对极坐标给出。
基于笛卡尔数据,呈现为以原点 (0,0) 为中心的圆形,这里用普通圆圈来模拟。
线条应从形状的圆周开始,以给定的角度指向形状外,并具有明确的长度。因此,使用相对的线的极坐标结尾观点。
使用 TikZ(左)看似简单的事情在axis
pgfplots(右)的环境中却失败了:如果使用相对极坐标,则倾斜角度和线的长度都不正确。
这里的相对极坐标有什么问题?
代码:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}
\draw(0,0) circle[radius=0.01];
\draw[blue] (0,0) circle[radius=1];
\draw[thick] (45:1) -- ++(45:0.5);
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[tiny,enlargelimits,
axis equal,
xmin=-2,xmax=2,
ymin=-1,ymax=1,
xtick={-2,-1,0,1,2},
ytick={-2,-1,0,1,2},
grid=major,
]
\draw[blue] (0,0) circle[radius=1];
\draw[blue, dashdotted] (0,0) -- (45:2);
\draw[thick] (45:1) -- ++(45:0.5);
% \draw[thick] (45:1) -- (45:1.5); %absolute coordinates do work
\end{axis}
\end{tikzpicture}
\end{document}
答案1
文档pgfplots
指出
如 的文档中所述
axis cs
,通过 TikZ++
操作符添加两个坐标可能会产生意想不到的效果。 正确的操作方式++
是axis direction cs:
。
angle:radius
不幸的是,对于,没有隐式极坐标( ) axis direction cs:
,这就是为什么你必须自己计算它们(但这很容易)。所以我们最终得到
%\draw[thick] (45:1) -- ++(45:0.5);
\draw[thick] (45:1) -- ++(axis direction cs:{0.5*cos(45)},{0.5*sin(45)});