我正在尝试创建一个具有重叠圆圈的三层系统,如下所示:
这样每个状态都应该一目了然(即使对于色盲的人来说也是如此)。我找到了类似的解决方案像这个,但不幸的是,我的 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}