请推荐一些用块绘制图表的工具?

请推荐一些用块绘制图表的工具?

我想使用 latex 代码绘制此图像。请帮帮我 在此处输入图片描述

答案1

我会通过为每个“点块”定义一个“图片”来实现这一点。您可以在 tikz 手册(版本 3.0.1a)第 18.2 节中阅读有关这些内容的所有内容。使用图片,下面的 MWE 生成以下图表:

在此处输入图片描述

MWE 的理念应该可以帮助您入门,即定义一个dotblock带有两个参数的图片:块的标签和点的数量。您可以通过多种不同的方式使用此图片,包括

\pic at (0,0) {dotblock={a,2}};
\draw (0,0) pic{dotblock={a,2}};

我认为这两个命令是等效的。

点块以放置点为中心垂直绘制。给出标签的目的dotblock是为了使用坐标轻松绘制块中点之间的边缘:命令

\draw(a2)--(b3);

从“块 a”中的第二个点到“块 b”中的第三个点画一条线。

以下是完整的 MWE:

\documentclass{article}
\usepackage{tikz}

\tikzset{
  pics/dotblock/.style args = {#1,#2}{% #1=label, #2=number of dots
     code = {
       \foreach \adot [remember=\adot as \bdot,
                       evaluate=\adot as \y using 0.5-\adot+#2/2] in {1,...,#2} {
          \node[circle, fill=black, radius=1mm] (#1\adot) at (0.5,\y) {};
       }
       \draw[blue](0,-#2/2) rectangle (1,#2/2);
     }
   }
}

\begin{document}

  \begin{tikzpicture}
    \pic at (0,0) {dotblock={a,2}};
    \draw (2,0) pic{dotblock={b,3}};
    \pic at (4,0) {dotblock={c,1}};
    \draw[red, dashed, thin](-0.2,1.7) rectangle (5.2,-1.7);
    \pic at (7,0) {dotblock={d,1}};

    \draw(a1)--(b3)--(c1)--(d1);
  \end{tikzpicture}
\end{document}

鉴于 OP 中的图像本质上有三种不同类型的重复块,我实际上会为它们中的每一个定义图片,然后将它们链接起来。例如,右边的块可以用

 pics/twoBlock/.style args = {#1}{
   code = {
    \draw[dashed,green!80!black](0,0)--(6,0);
    \draw(0,0) pic{dotblock={{#1}1,2}};
    \draw(2,0) pic{dotblock={{#1}2,1}};
    \draw[thin,red,dashed] (-0.2,1.2) rectangle (3.2,-1.2);
    \draw(5,0) pic{dotblock={{#1}3,2}};
    \draw[thin,red,dashed] (4.8,1.2) rectangle (6.2,-1.2);
   }
  }

这样\draw (7,0) pic{twoBlock={A}};就能产生

在此处输入图片描述

twoBlock={A},以及 的定义意味着twoBlock此图中的点被标记为A11A12A21和。请注意,首先绘制绿线A31A32以便它位于图片中其他对象的下方。

相关内容