我需要乳胶 tiKz 代码的帮助来绘制图表

我需要乳胶 tiKz 代码的帮助来绘制图表

我需要一些帮助才能用 LaTeX 绘制此图。学习难度相当大!

图形

答案1

像这样:

在此处输入图片描述

  • 对于点的位置使用regular shape来自库的角落shapes.geometric
  • 在环路中绘制点和连接线
  • 点的标签用循环中的计数器定义
\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{shapes.geometric}

\tikzset{
dot/.style = {circle, inner sep=1pt, fill,
              node contents={}},
 PG/.style = {% PentaGon
              regular polygon, regular polygon sides=5,
              minimum size=#1cm,
              node contents={}},
every label/.append style = {inner sep=1pt, font=\tiny} 
        } 

\begin{document}
    \begin{tikzpicture}
\node (n1) [PG=6, draw];
\node (n2) [PG=4];
\node (n3) [PG=2];
%
\foreach \i/\ii [evaluate=\ii as \jj using int(\ii+5),
                 evaluate=\ii as \kk using int(\ii+10)] 
            in {1/1,2/5,3/4,4/3,5/2}
{
    \node at (n1.corner \i) [dot, label=90+\i*360/5:\ii];
    \node at (n2.corner \i) [dot, label=90+\i*360/5:\jj];
    \node at (n3.corner \i) [dot, label=90+\i*360/5:\kk];
}
%%
\foreach \j [count=\i from 0] in {1,...,5}
{
\pgfmathsetmacro{\k}{int(1+Mod(\i+1,5))}
\pgfmathsetmacro{\l}{int(1+Mod(\i+3,5))}
\pgfmathsetmacro{\m}{int(1+Mod(\i+2,5))}
\draw   (n1.corner \j) -- (n3.corner \j) 
        (n1.corner \j) -- (n2.corner \k)
        (n2.corner \j) -- (n3.corner \l)
        (n3.corner \j) -- (n3.corner \l);
}

    \end{tikzpicture}
\end{document}

编辑:在第一个版本的答案中,节点的标记方向与 OP 图片中显示的相反。现在,通过替换原始循环可以纠正此问题

\foreach \i [count=\j from 6,
             count=\k from 11] in {1,...,5}
{
    \node at (n1.corner \i) [dot, label=90+\i*360/5:\i];
    \node at (n2.corner \i) [dot, label=90+\i*360/5:\j];
    \node at (n3.corner \i) [dot, label=90+\i*360/5:\k];
}

使用现在位于 MWE 上方的代码。

答案2

这是一种简单的入门方法,它定义了一个稍后可以使用的节点样式mynodes。然后您可以在不同位置绘制节点,例如在极坐标系中,其中第一个值是角度,第二个值是距离。最后您可以\draw从任何节点到任何节点。

这是我为您开始的,但由于我没有在边缘找到系统,您可能要自己完成它:

\documentclass[tikz,border=5mm]{standalone}

\begin{document}
\tikzset{mynodes/.style={inner sep=2pt,fill=black,circle}}
\begin{tikzpicture}[scale=2]
    \node[mynodes](N1) at (90:3){};
    \node[mynodes](N2) at (18:3){};
    \node[mynodes](N3) at (-54:3){};
    \node[mynodes](N4) at (-126:3){};
    \node[mynodes](N5) at (-198:3){};
    
    \node[mynodes](N6) at (90:2){};
    \node[mynodes](N7) at (18:2){};
    \node[mynodes](N8) at (-54:2){};
    \node[mynodes](N9) at (-126:2){};
    \node[mynodes](N10) at (-198:2){};
    
    \node[mynodes](N11) at (90:1){};
    \node[mynodes](N12) at (18:1){};
    \node[mynodes](N13) at (-54:1){};
    \node[mynodes](N14) at (-126:1){};
    \node[mynodes](N15) at (-198:1){};
    
    \draw (N1) -- (N2) -- (N3) -- (N4) -- (N5) -- (N1);

    \draw (N1) -- (N10);
    \draw (N2) -- (N6); 
    \draw (N3) -- (N7); 
    \draw (N4) -- (N8);
    \draw (N5) -- (N9);
    
    \draw (N4) -- (N9) -- (N14) -- (N12) -- (N7) -- (N2);
    \draw (N3) -- (N8) -- (N13) -- (N15) -- (N10) -- (N5);
    
    \draw (N1) -- (N6) -- (N11) -- (N9);
    
\end{tikzpicture}
\end{document}

在此处输入图片描述

通过使用定义循环节点可能会引入复杂性\pgfforeach,但我避免了这样做,正如您所说,您是初学者。但是对于较少的代码,这会很有用。

答案3

为了比较目的。

使用以下方式编译阿希希·董玉.(请不要修复它)

或者 http://asymptote.ualberta.ca/

size(7cm);
pair[] P,Q,T;
for (int i=0; i<5;++i){
  P.push(dir(90-i*72));
  Q.push(2/3*dir(90-i*72));
  T.push(1/3*dir(90-i*72));
 }
P.cyclic=true;
T.cyclic=true;
for (int i=0; i<P.length;++i){ 
  label(scale(0.6)*Label("$"+(string) (i+1) +"$"),P[i],dir(degrees(P[i])));
  label(scale(0.6)*Label("$"+(string) (i+6) +"$"),Q[i],dir(degrees(Q[i])+90));
  label(scale(0.6)*Label("$"+(string) (i+11) +"$"),T[i],dir(degrees(T[i])+90));
  draw(P[i]--T[i]);
  draw(P[i+1]--Q[i]);
  draw(Q[i]--T[i+2]);
}
draw(T[0]--T[2]--T[4]--T[1]--T[3]--cycle);
path pentagon=operator --(... P)--cycle;
draw(pentagon);
dot(P);
dot(Q);
dot(T);

在此处输入图片描述

相关内容