如何用 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
这轮图可以使用我编写的包。以下示例来自包文档。
使用、和键可获得中间的蓝色圆圈和相应的文本middle
。middle fill
middle 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}