![用乳胶绘制带有 pi 轴的 Argand 图?](https://linux22.com/image/466919/%E7%94%A8%E4%B9%B3%E8%83%B6%E7%BB%98%E5%88%B6%E5%B8%A6%E6%9C%89%20pi%20%E8%BD%B4%E7%9A%84%20Argand%20%E5%9B%BE%EF%BC%9F.png)
我正在尝试绘制一个 Argand 图,其圆心为 (0, −16π),半径16π。
问题是,我的图表的实轴和虚轴与轴相邻,但我希望标签位于 Im 的虚轴正上方,实轴正右侧(目前它出现在实轴上方)。我还希望轴以 pi 为单位进行标记,这样它们就像 −32π, −16π,0,16π,32π。
目前我还没有得到我的斧头在π。
下面是我的代码片段:
\begin{tikzpicture}
\begin{axis}[
xmin=-32*pi,
xmax=32*pi,
ymin=-32*pi*i,
ymax=32*pi*i,
axis equal,
axis lines=middle,
xlabel=Re\{$\mathcal{A}(s)$\},
ylabel=Im\{$\mathcal{A}(s)$\},
disabledatascaling]
\fill [opacity=0.2] (0,-16*pi) circle [radius=16*pi];
\end{axis}
\end{tikzpicture}
\end{center}
答案1
有时,直接使用 TikZ 更简单。毕竟这不是一个情节。
和x
键y
可让您缩放坐标坐标系。无需获取π涉及这里。
刻度是在画布坐标系中绘制的,因此它们不会随坐标坐标系。将轴向各个方向延伸约 10pt 也是如此。
代码
\documentclass[tikz]{standalone}
%\documentclass{article}
%\usepackage{tikz}
\usepackage{amsmath}
\DeclareMathOperator{\mRe}{Re}
\DeclareMathOperator{\mIm}{Im}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[>=Latex, x=+1mm, y=+1mm] % π equals 1mm
% 1. The circle
\fill[gray!50] (down:16) circle[radius=16];
% 2. The axes
\path[->, at end] % axes
([xshift=-10pt]left:32) edge
node[right] {$\mRe\{\mathcal A(s)\}$} ([xshift=10pt]right:32)
([yshift=-10pt]down:32) edge
node[above] {$\mIm\{\mathcal A(s)\}$} ([yshift=10pt] up:32);
% 3. The ticks
\foreach \j in {-32, -16, 16, 32}{
\draw[shift=(right:\j)] (down:2pt) node[below] {$\j\pi$} -- ( up:2pt);
\draw[shift=( up:\j)] (left:2pt) node[left ] {$\j\pi$} -- (right:2pt);
}
\end{tikzpicture}
\end{document}
输出
答案2
你可以直接画出来。这个是用lualatex
内置的元帖子语言。
您需要用 来编译它lualatex
。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
numeric pi; 72 pi = 288; % this is an arbitrary scale, so that pi is drawn as 4pt
% define the axes
path real, imag;
real = (left -- right) scaled 36 pi;
imag = real rotated 90;
% fullcircle paths have unit *diameter*
path C; C = fullcircle scaled 32 pi shifted (0, -16 pi);
fill C withcolor 7/8[blue, white];
% add some labels -- not sure that zero is needed
for i=-32, -16, 16, 32:
draw (origin -- 3 down) shifted (i*pi, 0); label.bot("$" & decimal i & "\pi$", (i*pi, -3));
draw (origin -- 3 left) shifted (0, i*pi); label.lft("$" & decimal i & "\pi$", (-3, i*pi));
endfor
% draw the axes
drawarrow real; label.rt("$\mathcal{A}(s)$", point 1 of real);
drawarrow imag; label.top("$\mathcal{A}(s)$", point 1 of imag);
endfig;
\end{mplibcode}
\end{document}
点击顶部的链接了解有关 MP 的更多信息。