据我了解,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 meta
scale length=0