使用矩阵您可以将矢量场的绝对值绘制为颜色图,以指示给定点的场强度。结果将如下所示:
(源代码:https://scicomp.stackexchange.com/a/18774/11911)
是否可以使用 pgfplots 或其他 LaTeX 绘图库绘制类似的颜色图?如何操作?
编辑
为了回答这个问题,只需考虑一个像这样的矢量场的简单例子:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,
xmax=2,
ymin=-2,
ymax=2,
view={0}{90}
]
\addplot3
[
samples=15,
->,
quiver={
u={y},
v={x},
scale arrows=0.3,
},
] {0};
%% Corresponding colormap is missing
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这个怎么样?(使用编译可以lualatex
大大加快速度。)
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\pgfplotsset{/pgfplots/colormap={jet}{rgb255(0cm)=(0,0,128) rgb255(1cm)=(0,0,255)
rgb255(3cm)=(0,255,255) rgb255(5cm)=(255,255,0) rgb255(7cm)=(255,0,0)
rgb255(8cm)=(128,0,0)}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-2,xmax=2,ymin=-2,ymax=2,view={0}{90},
colormap/jet]
\addplot3[surf,shader=interp,samples=101,point meta=-z]{min(sqrt(x*x+y*y),2.2)};
\addplot3
[samples=14,-stealth,quiver={u={y},v={x},scale arrows=0.3,}] {0};
\end{axis}
\end{tikzpicture}
\end{document}
你可以使用point meta max
和point meta min
,但我认为jet
颜色图与 MatLab 的非常接近。这个答案例如可以煮
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\pgfplotsset{/pgfplots/colormap={jet}{rgb255(0cm)=(0,0,128) rgb255(1cm)=(0,0,255)
rgb255(3cm)=(0,255,255) rgb255(5cm)=(255,255,0) rgb255(7cm)=(255,0,0)
rgb255(8cm)=(128,0,0)}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-2,xmax=2,ymin=-2,ymax=2,view={0}{90},
colormap/jet]
\addplot3[surf,shader=interp,samples=101,point meta=z]{2.2-min(sqrt(x*x+y*y),2.2)};
\addplot3[samples=24,
point meta={min(sqrt(x*x+y*y),2.2)},
quiver={u={y},v={x},scale arrows=0.18,
every arrow/.append style={%https://tex.stackexchange.com/a/134169
line width=1.5pt*\pgfplotspointmetatransformed/1000,
-stealth
},
}] {0};
\end{axis}
\end{tikzpicture}
\end{document}
我认为绘制“真实”矢量场的主要挑战不在于呈现,而在于求解场方程以获得一些可以输入的良好函数。