使用 foreach 时填充颜色到形状中

使用 foreach 时填充颜色到形状中

我尝试为图表中的圆圈添加不同的颜色,同时使用 foreach 将圆圈嵌入彼此中。

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

\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{amsfonts} 
\usepackage{amssymb}

\begin{document}

\begin{tikzpicture}[font=\sffamily, scale=0.8]
\foreach \X/\t [count=\Y starting from 2] in {Natural $\mathbb{N}$/red! ,Whole  numbers   $\mathbb{Z}$/green ,Rational $\mathbb{Q}$, Real algebraic $\mathbb{A}$, Real  $\mathbb{R}$}
 {\draw (-\Y,-\Y/2) circle ({1.5*\Y} and \Y);
 \node at (1-2*\Y,-1.1*\Y) {\X}; }
 \draw ([xshift=-0.5cm,yshift=-0.5cm]current bounding box.south west)
 rectangle ([xshift=0.5cm,yshift=0.5cm]current bounding box.north east);
 \node[anchor=south] at (current bounding box.north) {Types of numbers};
 \end{tikzpicture}

 \end{document}

有任何帮助或提示吗?谢谢。

答案1

如果要填充椭圆,则需要先画最大的椭圆,最后画最小的椭圆,否则最大的椭圆将覆盖图形的很大一部分。

由于您使用循环x/y中的符号\foreach并将\X\t用作变量,因此您需要做的就是以的形式定义每个 for-each 项<text of the node>/<color>,然后\t在以下代码的相关位置使用(存储颜色部分的位置),例如使用选项fill=\t

因此,您可以执行以下操作:

\documentclass[border=3.14mm]{standalone}

\usepackage{tikz}
\usepackage{amsfonts} 
\usepackage{amssymb}

\begin{document}

\begin{tikzpicture}[font=\sffamily, scale=0.8]
    \foreach \X/\t [count=\Y starting from 2] in {
        Real $\mathbb{R}$/cyan,
        Real algebraic $\mathbb{A}$/green, 
        Rational $\mathbb{Q}$/yellow, 
        Whole numbers $\mathbb{Z}$/orange, 
        Natural $\mathbb{N}$/red} {
            \pgfmathsetmacro{\nY}{8-\Y}
            \draw[fill=\t!25] (-\nY,-\nY/2) circle ({1.5*\nY} and \nY);
            \node at (1-2*\nY,-1.1*\nY) {\X};
        }
    \draw ([xshift=-0.5cm, yshift=-0.5cm]current bounding box.south west)
        rectangle ([xshift=0.5cm,yshift=0.5cm]current bounding box.north east);
    \node[anchor=south] at (current bounding box.north) {Types of numbers};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容