带有完整圆圈的 Tikz 探测图表书(2)

带有完整圆圈的 Tikz 探测图表书(2)

我在法国从事科学和地理生物学工作,我想创建自定义探测图表,看起来像上面的例子: 圆形探水图

这些图表用于较长的文本,它们必须位于圆的每个部分的轴上,并从左半中心的中心外侧开始,从右半中心的中心开始才可读......如果你对此有任何想法,那就真的很好了!

在左侧,有一些从一个探水图表到另一个探水图表的索引,并且标题允许有一些参考将这些图表链接在一起。

实际上,我不太擅长编程,我只是一个普通的 latex 用户,所以我可能需要一些帮助才能开始使用。也许有人能想到一些线索/例子,以便让 TikZ 也能使用它。

我想在脑海中输入一个术语列表,然后 TikZ 脚本会自动将其拆分为角度部分并实现自动化。

多谢 !

和

答案1

答案和你之前的问题很像:使用pics(尽管在这种情况下,它的优势不如前一个)。同样的抱怨:如果你给我们提供文本,你会得到更多的答案和更多的积极反馈。我编了一些文本。

从好的方面来看,没有什么可爱的方面。需要根据旋转角度自动旋转文本。这里是在变换后的图片中完成的。(TiZ 当然auto在倾斜的文本中以数学方式提供了这一点。)

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/pft/.style={code={
 \def\pv##1{\pgfkeysvalueof{/tikz/pft/##1}}
 \draw[pic actions] (\pv{alpha}:\pv{r}) -- (\pv{alpha}:\pv{R}) to[out=-90,in=150] 
 (0:\pv{R}+\pv{dR})  to[out=-150,in=90]
  (-\pv{alpha}:\pv{R}) -- (-\pv{alpha}:\pv{r}) -- cycle;
 \pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
 \pgfmathtruncatemacro{\itest}{(\tmpd<0 ? -1 :1)}
 \path  (0:\pv{R}) node[scale=\itest,anchor={90-90*\itest},transform shape,node font=\sffamily] {#1}; 
 }},pft/.cd,r/.initial=0.1,alpha/.initial=5,R/.initial=4,dR/.initial=0.3]
 \path foreach \X [count=\Y] in 
  {fox,marmot,cat,koala,bear,duck,mouse,%
  anteater,rhino,hippo,lion,tiger,%
  fox,marmot,cat,koala,bear,duck,mouse,%
  anteater,rhino,hippo,lion,tiger,
  fox,marmot,cat,koala,bear,duck,mouse,%
  anteater,rhino,hippo,lion,tiger}
  {(0,0)pic[anchor=west,rotate=160-\Y*10] {pft={\X}}
  \ifnum\Y<13
   (165-\Y*10:4.6) node[font=\sffamily\bfseries]{\Y}
  \fi
  };
 \fill circle[radius=0.2cm]; 
\end{tikzpicture}
\end{document}

在此处输入图片描述

也许我对 Ti 太乐观了Z 技能可以自动避免倒立。这个技能有用,但设置锚点时仍需有人帮忙。

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{shadings}
\begin{document}
\begin{tikzpicture}
\begin{scope}[pft/.cd,r/.initial=0.1,alpha/.initial=4.5,R/.initial=4,dR/.initial=0.3]
 \def\pv#1{\pgfkeysvalueof{/tikz/pft/#1}}
 \draw[shading=color wheel,fill opacity=0.2] 
  (155:\pv{r})
  foreach \Y in {1,...,36}
   { --
   (160-\Y*10+\pv{alpha}:\pv{r}) -- (160-\Y*10+\pv{alpha}:\pv{R}) 
    to[out=160-\Y*10-90,in=160-\Y*10+150] 
  (160-\Y*10:\pv{R}+\pv{dR})  to[out=160-\Y*10-150,in=160-\Y*10+90]
   (160-\Y*10-\pv{alpha}:\pv{R}) -- (160-\Y*10-\pv{alpha}:\pv{r})
   } -- cycle;
 \path
  foreach \X [count=\Y] in 
   {fox,marmot,cat,koala,bear,duck,mouse,%
   anteater,rhino,hippo,lion,tiger,%
   fox,marmot,cat,koala,bear,duck,mouse,%
   anteater,rhino,hippo,lion,tiger,
   fox,marmot,cat,koala,bear,duck,mouse,%
   anteater,rhino,hippo,lion,tiger}
   { (160-\Y*10:\pv{r})-- (160-\Y*10:\pv{R}) 
    node[pos=1,sloped,anchor={90-90*ifthenelse(cos(160-\Y*10)<0,-1,1)},font=\sffamily]{\X}
  \ifnum\Y<13
   (165-\Y*10:4.6) node[font=\sffamily\bfseries]{\Y}
  \fi
   } -- cycle;   
 \fill circle[radius=0.2cm];
\end{scope} 
\end{tikzpicture}
\end{document}

在此处输入图片描述

有兴趣了解更高级的版本吗?那就看看这里

folding所有其他的事情都可以用或库来完成shapes.geometric

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}[nodes={draw=gray,node font=\bfseries\sffamily},
    rp/.style={regular polygon,regular polygon sides=#1}]
 \path node[rp=8,minimum size=8em](6gon) {Potency}
 foreach \X [count=\Y] in {6P,12C,30C,200C,1M}
 {(6gon.225-45*\Y) node[rp=5,anchor=south,rotate=135-45*\Y,minimum size=5.2em]{\X}};
 \path (8,0) node[star,star points=7,minimum
 size=14em,fill=gray!50,rotate=360/14](S) {} 
 foreach \X [count=\Y,evaluate=\Y as \Z using {int(1+Mod(2-\Y,7))}]  in {Cream,Beer,Wine,Whiskey}
 {(S.outer point \Z) -- (S.center) 
 node[pos=0.1,sloped,anchor={90-sign(\Z-2.5)*90},draw=none]{\X}}
 (S.center) node[star,star points=7,minimum size=7em/2,rotate=360/14]{};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容