如何在乳胶中绘制以下三角形?

如何在乳胶中绘制以下三角形?

我想在 tikz 中绘制以下图像:

在此处输入图片描述

我不知道从哪里开始。我想也许可以有一个三角形的节点,然后将其放置在不同的地方。

我从这个开始:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}


\begin{tikzpicture}

\node[fill=white,shape=circle,draw=black, minimum size=4cm] (A) at (0,4.3) {A};
\node[fill=white,shape=circle,draw=black, minimum size=3cm] (A) at (0,3.2) {A};
\node[fill=white,shape=circle,draw=black, minimum size=2cm] (A) at (0,2.1) {A};
\node[fill=white,shape=circle,draw=black, minimum size=1cm] (A) at (0,1.1) {A};

\end{tikzpicture}

\end{document}

有几件事:

  1. 我想过将圆形改为三角形,但是当我把“圆形”改成“三角形”时,它不起作用——即使我使用了形状库。

  2. 我希望字母 A 出现在形状上方,而不是中间。

  3. 我想要一条波浪线连接所有形状的顶部。任何波浪线都可以。

答案1

我将使用 定义一个三角形“节点” pic(参见 tikz 手册第 18.2 节,版本 3.0.1a)。对于 MWE,我们需要指定三角形的高度和标签,因此需要pic接受两个参数。一种方法是将“三角形”定义pic为:

\tikzset{
  pics/triangle/.style args ={#1,#2}{% pic=triangle{label, height}
        code = {
          \draw(0,0)node[left]{$#1$} -- ++(#2/2,-#2) -- ++(-#2,0) -- cycle;
        }
     }
}

这只是tikz您“调用”时放置的“普通”代码pic。因此,例如,有了它,您可以绘制一个高度为的三角形3并添加标签S

\begin{tikzpicture}
  \pic at (0,3) {triangle={S,3}};
\end{tikzpicture}

还有其他几种“绘制” 的方法pics。例如,您也可以使用 绘制此三角形\draw(0,3)pic{triangle={S,3}};

绘制“波浪线”的最简单方法可能是使用“蛇形装饰”——请参阅手册第 48.3 节。

把所有这些放在一起,你就可以生成图表

在此处输入图片描述

使用代码

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{arrows.meta, decorations.pathmorphing}

\begin{document}

\tikzset{
  triangle/.style = {draw=black, fill=brown!5, thick},
  squiggle/.style = {decoration={snake, segment length=5mm}, decorate},
  pics/triangle/.style args ={#1,#2}{% pic=triangle{label, height}
        code = {
          \draw[triangle] (0,0)node[left]{$#1$} -- ++(#2/2,-#2) -- ++(-#2,0) -- cycle;
        }
     }
}

\begin{tikzpicture}
  \pic at (0,3) {triangle={S,3}};
  \pic at (0,2) {triangle={P,2}};
  \pic at (0,1) {triangle={P,1}};

  \draw[squiggle](0,2) -- (0,3);
  \draw[squiggle](0,1) -- (0,2);

  \draw[-{Latex[open]}] (2,1.5) -- ++(2,0);% using arrows.meta

  \pic at (6,3) {triangle={S,3}};
  \pic at (6,2) {triangle={P,2}};
  \pic at (6,1) {triangle={P,2}};
  \pic at (6,0) {triangle={P,2}};
  \pic at (6,-1.5) {triangle={P,0.5}};

  \foreach \bot/\y in {-1.5/1.5, 0/1, 1/1, 2/1} {
    \draw[squiggle](6,\bot) -- ++(0,\y);
  }
\end{tikzpicture}

\end{document}

部分是为了展示如何做,部分是为了微调图表(特别segment length是蛇),我添加了一些样式。

答案2

您将所有节点称为A,这可能不是您想要的,并且您可能使用多边形而不是三角形。在节点顶部放置标签可以通过 来实现label=above:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes} 

\begin{document}


\begin{tikzpicture}

\node[fill=white,shape=regular polygon,regular polygon sides=3,draw=black,
minimum size=4cm,label=above:A,anchor=south] (A1) at (0,4.3) {};
\node[fill=white,shape=regular polygon,regular polygon sides=3,draw=black,
minimum size=3cm,label=above:A,anchor=south] (A2) at (0,3.2) [above]{};
\node[fill=white,shape=regular polygon,regular polygon sides=3,draw=black,
minimum size=2cm,label=above:A,anchor=south] (A3) at (0,2.1) [above]{};
\node[fill=white,shape=regular polygon,regular polygon sides=3,draw=black,
minimum size=1cm,label=above:A,anchor=south] (A4) at (0,1.1) [above]{};

\end{tikzpicture}

\end{document}

在此处输入图片描述

现在你可以使用坐标了。如果你总是用不同的比例绘制相同的东西,你可以考虑使用scope

相关内容