创建三环交通信号灯系统

创建三环交通信号灯系统

我正在尝试创建一个具有重叠圆圈的三层系统,如下所示:

交通信号灯系统

这样每个状态都应该一目了然(即使对于色盲的人来说也是如此)。我找到了类似的解决方案像这个,但不幸的是,我的 tikz 知识缺乏,不知道如何将其转换为上述内容。有人能告诉我怎么做吗?

答案1

可以为每种颜色定义宏。圆如何重叠取决于绘制顺序,第二个圆绘制在第一个圆上。every path/.style={thick,fill=lightgray}设置圆的默认样式(此处为线宽和填充颜色)。填充颜色稍后会用 覆盖,例如,[fill=red]用于单个圆。使用极坐标((60:0.1)即沿 60° 方向移动 0.1 个单位)可以更容易地将它们放置在等边三角形中。

宏还有一个可选参数,可以缩放图片。

\documentclass{article}
\usepackage{tikz}

\newcommand*{\TlRed}[1][1]{%
  \begin{tikzpicture}[every path/.style={thick,fill=lightgray},scale=#1]
  \draw (60:0.1) circle (0.07);
  \draw (0.1,0)  circle (0.07);
  \draw[fill=red] (0,0) circle (0.07);
  \end{tikzpicture}%
}
\newcommand*{\TlYellow}[1][1]{%
  \begin{tikzpicture}[every path/.style={thick,fill=lightgray},scale=#1]
  \draw (0,0)    circle (0.07);
  \draw (60:0.1) circle (0.07);
  \draw[fill=yellow] (0.1,0) circle (0.07);
  \end{tikzpicture}%
}
\newcommand*{\TlGreen}[1][1]{%
  \begin{tikzpicture}[every path/.style={thick,fill=lightgray},scale=#1]
  \draw (0,0)    circle (0.07);
  \draw (0.1,0)  circle (0.07);
  \draw[fill=green] (60:0.1) circle (0.07);
  \end{tikzpicture}%
}

\begin{document}
M \TlRed \TlYellow \TlGreen\ M

\vspace{1ex}
{\Large M \TlRed[1.5] \TlYellow[1.5] \TlGreen[1.5] M}

\vspace{1ex}
\begin{tabular}{|l|c|c|c|}\hline
 & bad & hm... & good \\\hline
Traffic light & \TlRed & \TlYellow & \TlGreen \\\hline
\end{tabular}

\end{document}

在此处输入图片描述

相关内容