TikZ 中的循环流程图

TikZ 中的循环流程图

如何用 Ti 绘制此图像Z?

有什么建议吗?我想自己尝试一下,但需要一些帮助才能开始。

在此处输入图片描述

编辑,第一次尝试,我正在努力:

\documentclass[tikz,border=2mm]{standalone}
 \usetikzlibrary{shadings}
 \usetikzlibrary{shadows.blur}
 \tikzset{% from https://tex.stackexchange.com/a/287177/121799
   my blur shadow layer/.style={
     preaction={fill=black,fill opacity=.025,transform
     canvas={xshift=#1,yshift=0}},
   },
   my blur shadow/.style={
     my blur shadow layer/.list={.3pt,.6pt,...,4.8pt},
   },
 }
 \makeatletter%from https://tex.stackexchange.com/a/245444/121799
 \pgfdeclareradialshading{tikz@lib@fade@circle@5}{\pgfpointorigin}{%
   color(0pt)=(pgftransparent!0); color(18.75bp)=(pgftransparent!0);%
   color(22bp)=(pgftransparent!100); color(40bp)=(pgftransparent!100)%
 }
 \pgfdeclarefading{circle with fuzzy edge 5 percent}{%
   \pgfuseshading{tikz@lib@fade@circle@5}%
 }
 \pgfdeclareradialshading{tikz@lib@fade@circle@2}{\pgfpointorigin}{%
   color(0pt)=(pgftransparent!100); color(18.75bp)=(pgftransparent!100);%
   color(22bp)=(pgftransparent!0); color(40bp)=(pgftransparent!0)%
 }
 \pgfdeclarefading{circle with fuzzy edge 2 percent}{%
   \pgfuseshading{tikz@lib@fade@circle@2}%
 }
 \makeatother
 \begin{document}
 \begin{tikzpicture}[font=\bfseries\sffamily]
  \node[draw=gray!50,line width=0.5mm,circle,fill=blue!30, minimum width=3cm, 
  align=center, text width=3cm, text=white, font=\bfseries\sffamily\Large,
  my blur shadow] (OVS) at (0,0)
  {Optimized vibrating systems};
  \foreach \Angle/\Color/\Label in
  {90/blue!80!white/PC,210/orange/AC,330/green!60!blue/FF}
  {
  \node[draw=gray!50,line width=0.5mm,circle,
  left color=\Color,right color=\Color !60!black, minimum width=2cm, 
  align=center, text=white, font=\bfseries\sffamily\Large,
  my blur shadow] (\Label) at (\Angle:2.4cm)
  {\Label};
  }
  \draw[ultra thick,latex-latex] (PC) to [bend right=30] 
  node[midway,fill=white,sloped]{}(AC);
  \draw[ultra thick,latex-latex] (AC) to [bend right=30] 
  node[midway,fill=white,sloped]{}(FF);
  \draw[ultra thick,latex-latex] (FF) to [bend right=30] 
  node[midway,fill=white,sloped]{}(PC);
 \end{tikzpicture}
 \end{document}

答案1

有了这么好的起点,一切都不会太难。;-)

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{shadings,intersections,calc,decorations.text}
\usetikzlibrary{shadows.blur,arrows.meta,bending}
\tikzset{% from https://tex.stackexchange.com/a/287177/121799
   my blur shadow layer/.style={
     preaction={fill=black,fill opacity=.025,transform
     canvas={xshift=#1,yshift=0}},
   },
   my blur shadow/.style={
     my blur shadow layer/.list={.3pt,.6pt,...,4.8pt},
   },
 }
 \makeatletter%from https://tex.stackexchange.com/a/245444/121799
 \pgfdeclareradialshading{tikz@lib@fade@circle@5}{\pgfpointorigin}{%
   color(0pt)=(pgftransparent!0); color(18.75bp)=(pgftransparent!0);%
   color(22bp)=(pgftransparent!100); color(40bp)=(pgftransparent!100)%
 }
 \pgfdeclarefading{circle with fuzzy edge 5 percent}{%
   \pgfuseshading{tikz@lib@fade@circle@5}%
 }
 \pgfdeclareradialshading{tikz@lib@fade@circle@2}{\pgfpointorigin}{%
   color(0pt)=(pgftransparent!100); color(18.75bp)=(pgftransparent!100);%
   color(22bp)=(pgftransparent!0); color(40bp)=(pgftransparent!0)%
 }
 \pgfdeclarefading{circle with fuzzy edge 2 percent}{%
   \pgfuseshading{tikz@lib@fade@circle@2}%
 }
 \makeatother
 \begin{document}
 \begin{tikzpicture}[font=\bfseries\sffamily]
  \node[draw=gray!50,line width=0.5mm,circle,fill=blue!80, minimum width=3cm, 
  align=center, text width=3cm, text=white, font=\bfseries\sffamily\Large,
  my blur shadow] (OVS) at (0,0)
  {Optimized vibrating systems};
  \path[name path=circle] (0,0) circle[radius=3.4cm];
  \foreach \Angle/\Color/\Label/\Text in
  {90/green!70!black/PC/{Passive\\ Control},%
  210/orange/AC/{Active\\ Control},%
  330/red!80!black/FF/{Feed-\\ forward}}
  {
  \node[draw=white,line width=0.75mm,circle,name path=\Label,
  left color=\Color,right color=\Color !60!black, minimum width=2cm, 
  align=center, text=white, font=\bfseries\sffamily\Large,
  my blur shadow] (\Label) at (\Angle:3.5cm)
  {\Text};
  \path[name intersections={of=circle and \Label,by={\Label-1,\Label-2}}];
  \draw[line width=2mm,-{Latex[length=2mm,width=5mm]}] (\Label) -- (OVS);
  }
  \draw[shorten >=0.75mm,gray,line width=2mm,{Latex[length=2mm,width=5mm]}-{Latex[length=2mm,width=5mm]}] 
  let \p1=(AC-1),\p2=(PC-2),\n1={atan2(\y1,\x1)},\n2={atan2(\y2,\x2)}
  in   (PC-2) arc(\n2:\n1+360:3.5cm);
  \draw[shorten >=0.75mm,gray,line width=2mm,{Latex[length=2mm,width=5mm]}-{Latex[length=2mm,width=5mm]}] 
  let \p1=(PC-1),\p2=(FF-1),\n1={atan2(\y1,\x1)},\n2={atan2(\y2,\x2)}
  in   (FF-1) arc(\n2:\n1:3.5cm);
  \draw[shorten >=0.75mm,gray,line width=2mm,{Latex[length=2mm,width=5mm]}-{Latex[length=2mm,width=5mm]}] 
  let \p1=(FF-2),\p2=(AC-2),\n1={atan2(\y1,\x1)},\n2={atan2(\y2,\x2)}
  in   (AC-2) arc(\n2:\n1:3.5cm);
  \draw[even odd rule,bottom color=gray!80,top color=gray!20] (0,0)
        circle[radius=5cm] circle[radius=6cm];
  \path[decoration={raise = -0.8ex,text  along path,
                text = {|\huge\sffamily\bfseries|Dynamic model},
                text align = center,
            }, decorate]
 (150:5.4) arc (150:30:5.4cm);
  \path[decoration={raise = -0.2ex,text  along path,
                text = {|\large\sffamily\bfseries|Mass M, Damping D, Stiffness K},
                text align = center,
            }, decorate]
 (225:5.4) arc (225:135:5.4cm);
  \path[decoration={raise = -0.2ex,text  along path,
                text = {|\large\sffamily\bfseries|Frequency response function H},
                text align = center,
            }, decorate]
 (45:5.4) arc (45:-45:5.4cm);
 \draw[line width=1mm,-{Latex[bend]}] (135:5.5) arc(135:120:5.5);
 \draw[line width=1mm,-{Latex[bend]}] (45:5.5) arc(45:60:5.5);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

轮图可以使用我编写的包。以下示例来自包文档。

使用、和键可获得中间的蓝色圆圈和相应的文本middlemiddle fillmiddle style

绿色、栗色和橙色圆圈是用键获得的slices。文本由\WCvarB键的第二个变量给出wheel data

3 个灰色箭头按秒绘制\wheelchart。这些箭头之间的间隙可通过 键获得gap polar

外部文本由第三个 放置\wheelchart。文本由第一个变量给出\WCvarA,该变量由键 给出arc data,前后空格由 获得~。在第二个切片中,使用键 添加弧/箭头arc{2}。此弧/箭头使用键 为弧数据留出空间arc around text

在此处输入图片描述

\documentclass[border=6pt,dvipsnames]{standalone}
\usepackage{wheelchart}
\usetikzlibrary{decorations.text}
\begin{document}
\begin{tikzpicture}
\sffamily
\wheelchart[
  data=,
  middle=Optimized\\vibrating\\systems,
  middle fill=RoyalBlue,
  middle style=white,
  radius={1.2}{4},
  slices={(0,0) circle[radius=0.8];},
  slices style=\WCvarA,
  start half,
  value=1,
  wheel data=\WCvarB,
  wheel data pos=0.5,
  wheel data style={
    white,
    align=center
  }
]{%
  Green/Passive\\control,
  Maroon/Feed-\\forward,
  Orange/Active\\control%
}
\wheelchart[
  gap polar=25,
  radius={2.5}{2.7},
  slices end arrow={1}{-1},
  slices start arrow={1}{-1},
  slices style=Gray,
  total count=3
]{}
\foreach\n in {-30,90,210}{
  \draw[->,MidnightBlue,ultra thick] (\n:1.7)--(\n:1.3);
}
\fill[top color=Gray!50,bottom color=Gray,draw,even odd rule] (0,0) circle[radius=3.5] circle[radius=4.2];
\wheelchart[
  arc{2}={<-,ultra thick},
  arc around text,
  arc data=~\WCvarA~,
  arc data pos=0.5,
  arc pos=0.5,
  data=,
  gap polar=10,
  radius={3.5}{4.2},
  slices style={fill=none},
  start half=180,
  value=1
]{%
  {Mass M, Damping D, Stiffness K},
  Dynamic model,
  Frequency response functions H,
  %
}
\end{tikzpicture}
\end{document}

相关内容