这个问题源于pgfplots 中的标量场。
如何绘制箭头图,其中箭头具有相同的长度,但是它们的线宽根据向量的某些标量属性而变化?
答案1
Pgfplots 允许使用point meta
作为附加输入坐标。通常,point meta
用作颜色数据,但也可以用于不同的目的。
在这种情况下,您可以将其用作箭头图的线条粗细参数:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\def\U{1}
\def\V{2*x}
\def\LEN{(sqrt((\U)^2 + (\V)^2)}
\begin{axis}[axis equal]
\addplot[blue,
point meta={\LEN},
quiver={
u={(\U)/\LEN},v={(\V)/\LEN},
scale arrows=2,
every arrow/.append style={line width=\pgfplotspointmetatransformed/1000 * 2pt},
},
-stealth,samples=15,
] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}
该示例定义了一些宏\U
、\V
和\LEN
其中\LEN
是这些向量的长度。然后,绘制一个箭筒图,其中每个向量都标准化为单位长度 - 并将长度参数指定为point meta
。这是一种将额外数据传达给图表的简单而标准的方式(您也可以在表中输入额外值)。
最后,\pgfplotspointmetatransformed
是 [0,1000] 范围内的标量值,对应0
于最低限度 point meta
值并1000
对应于最大限度 point meta
价值。
该比例的表达式line width
是线性的,因此最小线条粗细为 0,最大线条粗细为 2pt。
请注意axis equal
,如果我们想要看向量有相同的大小。