我需要在 tikz 中制作如图所示的 3D 图。这是传递函数的幅度图
H(s)= (s+1)(s+2)/(s+3)(s+1+j)(s+1-j)
很抱歉,我没有分享任何尝试,因为我对 tikz 3d 绘图一无所知。如果有人提供解决方案,那将是我的起点,然后我会在此基础上继续努力。
提前致谢。
我已尝试,但仍有一些事情需要纠正。
我根据不同资源的在线帮助绘制了该图表(附加代码和图片)。
现在的问题是
- 它没有纠正在 yz 平面上绘制曲线的红线并给出此错误消息
软件包 pgfplots 错误:抱歉,您不能在此上下文中使用“y”。PGFPlots 需要采样一条线,而不是一个网格。请使用 [mesh] 选项结合 [samples y>0] 和 [domain y!=0:0] 来指示二维输入域。
标签太小且放置不正确。
如果有人可以设置视角,使它看起来就像书中的图片一样。
如果有人能在这方面提供帮助。
\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc,math}
\pgfplotsset{compat=newest}
\pgfkeys{/pgf/declare function={H(\x,\y) = 3*((((((\x)^2-(\y)^2+3*(\x)+2)^2+((2*\x*\y)+3*\y)^2)+2.2204e-16)^(1/2))/(((((\x)^3+5*(\x)^2-3*\x*(\y)^2+8*x-5*(\y)^2+6)^2+(3*(\x)^2*y+10*\x*\y-(\y)^3+8*y)^2)+2.2204e-16)^(1/2)));}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle, axis on top,
axis equal image,
width=50cm,
view={30}{10},
xmin=-4,
xmax=0,
ymin=-2,
ymax=2,
zmin=0,
zmax=5,
miter limit=1,
xlabel=$\sigma$,
xlabel style={anchor=east,xshift=-5pt,at={(xticklabel* cs:.95)}},
ylabel=$j\Omega$,
zlabel=$\mathopen| H(s)\mathclose|$,
zlabel style={anchor=north east},
xtick = {-3,-2,-1,0},
hide obscured x ticks=false,
ytick = {-1,0,1},
ztick = {2,4},
]
\addplot3[
smooth,
surf,
faceted color=gray,
line width=0.1pt,
fill=white,
domain=-4:0,
y domain = -2:2,
samples = 50,
samples y = 50,
restrict z to domain*=0:5]
{H(\x,\y)};
\addplot3[domain=-2:2,samples=70, samples y = 0,red, thick] ({0},{x},{H(0,x)});
\end{axis}
\end{tikzpicture}
\end{document}