
私はtikzを使ってベクトル場$F(x,y) = \cos (x+y) \vec{i} + x \vec{j}$をプロットしようとしています。私はここで見たベクトル場のプロットに関する別のトピックに従い、他のベクトル場をプロットするのに使用し、かなりうまくいきましたが、これは私を悩ませています。目標は次のとおりです。
しかし、代わりにこれを手に入れました
このコードを使用する
\begin{tikzpicture}[trig format = rad]
\begin{axis}[ticks=none,
view = {0}{90},
domain = -1:1,
y domain = -1:1,
samples = 21,
]
\addplot3 [cyan, quiver={u={cos (x + y)}, v={x}, scale
arrows=0.1},samples=10, -latex] (x,y,0);
\end{axis}
\end{tikzpicture}
$x$ 軸と $y$ 軸を表す線を配置しようともしていませんでした。最初は を使用しておらずtrig format = rad
、まったく正しくありませんでした。次に、$x$ と $y$ ドメインを変更してみましたが、状況は悪化するばかりでした。次に を使用しようとしましたtrig format = rad
が、ランダムな線が表示され、ベクトル フィールドは望んでいたものとは異なります。どなたか助けていただけませんか? よろしくお願いします!
答え1
矢印をグリッド座標の中心にするには、(x,y)
矢印の長さの半分を減算します。
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{arrows.meta}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\clip[rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\begin{axis}[
x=1cm, y=1cm, z=0cm,
view={0}{90},
anchor=center,
trig format plots=rad,
xmin=-3, xmax=3,
ymin=-3, ymax=3,
axis lines=center,
domain=-3:3,
y domain=-3:3,
enlargelimits=0.1,
ticks=none,
]
\addplot3[
cyan, thick,
point meta={sqrt((cos(x+y))^2+x^2)},
quiver={
u={cos(x+y)}, v={x},
scale arrows=0.2,
every arrow/.append style={-{Triangle[scale=0.2+0.8*\pgfplotspointmetatransformed/1000]}},
},
samples=10,
] (x-0.1*cos(x+y),y-0.1*x,0);
\end{axis}
\draw[cyan, ultra thick, rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\end{tikzpicture}
\end{document}
編集:より正確なプロットは、下の赤のようにこの新しい位置から矢印ベクトルを計算することです。
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{arrows.meta}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\clip[rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\begin{axis}[
x=1cm, y=1cm, z=0cm,
view={0}{90},
anchor=center,
trig format plots=rad,
xmin=-3, xmax=3,
ymin=-3, ymax=3,
axis lines=center,
domain=-3:3,
y domain=-3:3,
enlargelimits=0.1,
ticks=none,
]
\addplot3[
cyan, thick,
point meta={sqrt((cos(x+y))^2+x^2)},
quiver={
u={cos(x+y)}, v={x},
scale arrows=0.2,
every arrow/.append style={-{Triangle[scale=0.2+0.8*\pgfplotspointmetatransformed/1000]}},
},
samples=10,
] (x-0.1*cos(x+y),y-0.1*x,0);
\addplot3[
red, thick,
point meta={sqrt((cos((x-0.1*cos(x+y))+y))^2+(x-0.1*cos(x+y))^2)},
quiver={
u={cos((x-0.1*cos(x+y))+y)}, v={x-0.1*cos(x+y)},
scale arrows=0.2,
every arrow/.append style={-{Triangle[scale=0.2+0.8*\pgfplotspointmetatransformed/1000]}},
},
samples=10,
] (x-0.1*cos(x+y),y-0.1*x,0);\end{axis}
\draw[cyan, ultra thick, rounded corners] (-3.2,-3.2) rectangle (3.2,3.2);
\end{tikzpicture}
\end{document}