使用 pgfplots 绘制箭头图:使用 arrowsize 绘制箭头比例

使用 pgfplots 绘制箭头图:使用 arrowsize 绘制箭头比例

据我了解,pgfplots无论箭头本身的大小(应该说长度)如何,箭筒图都会保持箭头大小恒定。有没有办法让箭头大小与箭头长度呈线性相关?

\documentclass[10pt,tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pgfplots}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[scale=1]
\begin{axis}[domain=-3:3, view={0}{90}]
\addplot3[Couleur, quiver={u=-x, v={-y},scale arrows=0.085},-{Latex[width=2pt,length=3pt]},samples=21] {0};
\end{axis}
\end{tikzpicture}
\end{document}

编辑:下面给出了一个可能的解决方案,但它并不令人信服,因为箭头大小很难控制。此外,图形中心的线条粗细几乎为零,而箭头不会消失。

\documentclass[10pt,tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1]
\def\U{-x}\def\V{-y}\def\LEN{(sqrt((\U)^2 + (\V)^2)}
\begin{axis}[axis equal,view={0}{90}]
\addplot3[blue,point meta={\LEN},quiver={u={(\U)},v={(\V)},scale arrows=.15,every arrow/.append style={line width=\pgfplotspointmetatransformed/1000 * .5pt}},- latex,samples=24] {0};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

@Jake 建议的方法是正确的。不幸的是,-{Latex[width=...]}在 内部使用时会导致奇怪的问题every arrow。似乎不支持这种箭头键重新配置。我最终会研究它,听起来像是arrows.meta库和之间有些不兼容pgfplots

但如果你使用scale length看起来更适合的方法,它就会起作用:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-3:3, view={0}{90}]
\addplot3[blue,
    point meta={sqrt(x^2+y^2)},
    quiver={
        u=-x, 
        v={-y},
        scale arrows=0.085,
        every arrow/.append style={%
            -{Latex[scale length={max(0.1,\pgfplotspointmetatransformed/1000)}]},
        },
    },
    samples=21,
] 
    {0};
\end{axis}
\end{tikzpicture}


\end{document}

在此处输入图片描述

这个想法类似于如何绘制具有不同线条粗细的箭头图?:我们将其定义point meta为类似于向量长度。然后我们every arrow按 进行缩放\pgfplotspointmetatransformed/1000。请记住,是 [0,1000] 范围内的数字;它是将 的值映射到该范围\pgfplotspointmetatransformed的结果。由于是非法的,我们必须在这里引入一个下限。point metascale length=0

相关内容