我正在使用箭筒图创建一个矢量场,并且我希望所有矢量的长度都是单位。为什么下面的方法不起作用?
\documentclass{article}
\usepackage{pgfplots,}
\pgfplotsset{compat=1.8}
\usepackage{amsmath}
\begin{document}
\def\length{sqrt(1+(x-y)^2)}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
view={0}{90},
domain=-2:2,
y domain=-2:2,
xmax=2, ymax=2,
samples=15
]
\addplot3 [gray, quiver={u={1/(\length)}, v={(x^2+y^2-1)/(\length)}, scale arrows=0.1, every arrow/.append style={-latex}}] (x,y,0);
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您确定长度的公式是错误的。您需要使用sqrt(1+(x^2+y^2-1)^2)
,因为未缩放箭头的 x 和 y 分量分别为1
和x^2+y^2-1
。请注意,在这种情况下您应该设置axis equal image
,以确保两个轴具有相同的单位向量长度:
\documentclass{article}
\usepackage{pgfplots,}
\pgfplotsset{compat=1.8}
\usepackage{amsmath}
\begin{document}
\def\length{sqrt(1+(x^2+y^2-1)^2)}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
view={0}{90},
domain=-2:2,
y domain=-2:2,
xmax=2, ymax=2,
samples=15,
axis equal image
]
\addplot3 [gray, quiver={u={1/\length}, v={(x^2+y^2-1)/\length}, scale arrows=0.2, every arrow/.append style={-latex}}] (x,y,0);
\end{axis}
\end{tikzpicture}
\end{document}