如何绘制具有不同线条粗细的箭头图?

如何绘制具有不同线条粗细的箭头图?

这个问题源于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,如果我们想要向量有相同的大小。

相关内容