这个问题并没有要求用户提供完整的 MWE,而只是为了一步步获取创建不同圆形扇区的信息。
该图片取自该网站:https://www.inrim.it/sites/default/files/mediaroot/eventi/logo_nuovosi.png
我只阅读了制作饼图的手册pgf-pie
,并非常真诚地看到了用户的反馈,我感到非常害怕(见此处:多层甜甜圈派)。
事实上,我想知道是否需要很多代码来制作非 3D 的正面代码。
我想这样做是因为我绝对不喜欢像$\Delta v$
和这样的符号$K_{\text{cd}}$
。
因此我只要求用户提供最简单的步骤,而不是完整的 MWE。
谢谢(非常抱歉我没有添加图片链接,也没有说明它仅供我使用,不会被发布或不当使用)。
答案1
以下代码看起来足够简单,并解决了底部块中字母的旋转问题。
\documentclass[border=3mm]{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{arev}
\begin{document}
\Large
\begin{tikzpicture}[scale=1.3]
% -----------------------------------
% the \foreach-part
\foreach\n/\k/\l/\o
[evaluate={\n as \p using int((\n-3)*(\n-4))},
evaluate={\n as \angle using (90+360/14-360/7*\n)},
evaluate={\n as \Angle using (90+360/14-360/7*(\n+1))},
evaluate={\n as \nsegment using (360/7*\n)}
]
in
{0 /red/kg/$h$,
1 /orange/m/$c$,
2 /yellow/s/$\Delta v$,
3 /Green/A/$e$,
4 /RoyalBlue/K/$k$,
5 /violet/mol/$N_A$,
6 /Blue/cd/$K_{\textnormal{\scriptsize cd}}$%
}
{\fill[draw=white,line width=2.5pt,fill=\k!90!black,domain=\angle:\Angle,variable=\t]
plot ({2*cos(\t)},{2*sin(\t)})
-- (0,0)
-- cycle;
\fill[white,opacity=.4,domain=\angle:\Angle,variable=\t]
plot ({1.2*cos(\t)},{1.2*sin(\t)})
-- (0,0)
-- cycle;
\ifnum\p=0
\path
node[white,rotate=180-\nsegment] at (90-\nsegment:1.6) {\l}
node[rotate=180-\nsegment,font=\small] at (90-\nsegment:.95) {\o};
\else
\path
node[white,rotate=-\nsegment] at (90-\nsegment:1.6) {\l}
node[font=\small,rotate=-\nsegment] at (90-\nsegment:.95) {\o};
\fi
}
% -----------------------------------
\node[circle,font=\huge,fill=white,inner sep=7pt] (0,0) {SI};
\end{tikzpicture}
\end{document}
答案2
也许是这样的:
您可以通过查看彩色手动。如果您确实想要K
,A
并且s
像 OP 中那样旋转,则可以这样做,但下面的旋转更自然。
以下是代码:
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \top/\mid/\col [count=\c,
evaluate=\c as \st using {360/7*(\c-1)+1},
evaluate=\c as \en using {360/7*\c-1},
evaluate=\st as \se using {(\st+\en)/2}
] in {m/c/orange,
kg/h/red,
cd/K_cd/purple,
mol/N_A/purple,
K/k/blue,
A/e/green,
S/\Delta v/yellow} {
\draw[\col,fill=\col!80] (\st:1)--(\st:2)
arc [start angle=\st, end angle=\en, radius=2]
--(\en:1)
arc [start angle=\en, end angle=\st, radius=1];
\draw[\col,fill=\col!50] (\st:0.5)--(\st:1)
arc [start angle=\st, end angle=\en, radius=1]
--(\en:0.5)
arc [start angle=\en, end angle=\st, radius=0.5];
\node[white,rotate=\se-90,font=\bfseries] at (\se:1.5){\top};
\node[rotate=\se-90,font=\scriptsize] at (\se:0.75){$\mid$};
}
\end{tikzpicture}
\end{document}
答案3
这轮图我写的包,可以使用。
数据首先存储在宏中\WClist
。
切片之间的间隙是通过密钥获得的gap
。
我们设置value=1
每个切片的大小相同。我们还将键设置为data
空。
车轮的转动数据由键决定wheel data style
。
\documentclass[border=6pt,dvipsnames]{standalone}
\usepackage{wheelchart}
\begin{document}
\begin{tikzpicture}
\sffamily
\def\WClist{%
Red/kg/$h$,
Orange/m/$c$,
Dandelion/s/$\Delta v$,
Green/A/$e$,
RoyalBlue/K/$k$,
Purple/mol/$N_{A}$,
Blue/cd/$K_{cd}$%
}
\pgfkeys{
/wheelchart,
data=,
gap=0.03,
start half,
value=1,
wheel data pos=0.5,
wheel data style={rotate={\WCmidangle<225?\WCmidangle-90:(\WCmidangle<315?\WCmidangle+90:\WCmidangle-90)}}
}
\wheelchart[
middle={\huge SI},
radius={1.2}{2},
slices style=\WCvarA,
wheel data={\textcolor{white}{\WCvarB}}
]{\WClist}
\wheelchart[
radius={0.75}{1.2},
slices style=\WCvarA!60,
wheel data={\footnotesize\WCvarC}
]{\WClist}
\end{tikzpicture}
\end{document}