答案1
实现起来相当简单。这将绘制图表并在示例中展示如何添加文本和其他内容。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}[declare function={rr(\t)=0.5+\t/180;},samples=51]
\draw[line width=1mm] (0,-0.8) to[bend left] (-110:{rr(110)}) --
plot[smooth,variable=\t,domain=110:450]
(-\t:{rr(\t)});
\draw[thick] plot[smooth,variable=\t,domain=810:450]
(-\t:{0.96*rr(\t)}) --
plot[smooth,variable=\t,domain=450:810]
(-\t:{1.04*rr(\t)});
\draw[thick] plot[smooth,variable=\t,domain=1120:810]
(-\t:{0.94*rr(\t)}) --
plot[smooth,variable=\t,domain=810:1120]
(-\t:{0.98*rr(\t)})
plot[smooth,variable=\t,domain=1120:810]
(-\t:{0.96*rr(\t)})
plot[smooth,variable=\t,domain=830:810]
(-\t:{1.06*rr(\t)}) --
plot[smooth,variable=\t,domain=810:835]
(-\t:{1.02*rr(\t)});
\draw[densely dotted] plot[smooth,variable=\t,domain=830:850]
(-\t:{1.06*rr(\t)})
plot[smooth,variable=\t,domain=835:850]
(-\t:{1.02*rr(\t)})
foreach \X in {0.94,0.96,0.98}
{plot[smooth,variable=\t,domain=1120:1140]
(-\t:{\X*rr(\t)})};
\draw[line width=1mm,-{Stealth[bend]}]
(20:7) arc[start angle=20,end angle=225,radius=7];
\draw[dashed,node font=\bfseries]
(20:7.5) arc[start angle=20,end angle=270,radius=7.5]
coordinate[pos=0] (p1) node[pos=0.025,right]{Text}
coordinate[pos=0.05] (p2) node[pos=0.1,right]{Text}
coordinate[pos=0.15] (p3)
-- (0,7.5)
foreach \X in {1,2,3} {(0,0) edge (p\X)};
\path[nodes={circle,draw,dash pattern=on 0.4pt off 0.8pt,inner sep=0.8ex,thick}]
(-450:{rr(450)}) node(c1){}
(-810:{0.96*rr(810)}) node(c2){}
(-810:{1.04*rr(810)}) node(c3){};
\path (2,-7.5) node[right](c){connections} foreach \X in {1,2,3}
{(c) edge[-stealth] (c\X)};
\draw[stealth-,shorten <=0.5mm] (-240:{rr(240)}) -- ++ (120:7)
node[above,align=center]{Text\\ Text Text};
\end{tikzpicture}
\end{document}