在维恩图中绘制多个维恩图

在维恩图中绘制多个维恩图

我希望创建一个包含 5 个部分的维恩图,每个部分都包含在另一个部分内,类似于:

在此处输入图片描述

但是我不太确定从哪里开始。我读了一些关于 tikz 包和维恩图的资料,但我能做的最好的事情是使用这个:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\foreach \X [count=\Y starting from 2] in {$\mathbb{N}$,$\mathbb{W}$,$\mathbb{Z}$,$\mathbb{Q}$,$\mathbb{R}$}
{\draw (-\Y,-\Y/2) circle ({1.5*\Y} and \Y);
\node at (1-2*\Y,-1.1*\Y) {\X}; }
\node[anchor=south]{};
\end{tikzpicture}

\end{document}

但这并不能满足我的要求。我目前得到的输出如下:在此处输入图片描述

任何能够解决的帮助都将非常有帮助!

答案1

如果你想坚持使用循环的解决方案\foreach,你需要改变X以获得所需结果的方式坐标,例如像这样(向节点添加垂直校正,以便所有字母位于同一基线上):

\documentclass[border=10pt]{standalone}
\usepackage{amsfonts}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\foreach \X [count=\Y starting from 2] in
    {$\mathbb{N}$,$\mathbb{W}$,$\mathbb{Z}$,$\mathbb{Q}$,$\mathbb{R}$} {
        \draw ({0.5*\Y},0) circle ({0.75*\Y} and {0.25*\Y});
        \node[anchor=base, yshift=-0.67ex] at ({1.25*\Y-0.75},0) {\X}; 
    }
\end{tikzpicture}
\end{document}

在此处输入图片描述


我怎么会忘记添加l3draw代码的变体:

\documentclass[border=10pt]{standalone}
\usepackage{amsfonts}
\usepackage{l3draw}

\begin{document}
    \ExplSyntaxOn
    \draw_begin:
    \clist_set:Nn \l_tmpa_clist {
        $\mathbb{N}$ , $\mathbb{W}$ , $\mathbb{Z}$ , $\mathbb{Q}$ , $\mathbb{R}$
    }
    \int_step_inline:nn { \clist_count:N \l_tmpa_clist } {
        \draw_path_ellipse:nnn { (0.5cm * ( #1 + 1) ) , 0cm } { 0.75cm * ( #1 + 1) , 0cm } { 0cm , 0.25cm * ( #1 + 1) }
        \draw_path_use_clear:n { stroke }
        \hcoffin_set:Nn \l_tmpa_coffin { \clist_item:Nn \l_tmpa_clist {#1} }
        \draw_coffin_use:Nnnn \l_tmpa_coffin { H } { hc } { ( 1.25cm * ( #1 + 1) - 0.75cm ) , -0.67ex }
    }
    \draw_end:
    \ExplSyntaxOff
\end{document}

答案2

这是一种方法。也许你需要从内到外开始努力……

  • help-grid 从 (0,0) 开始,向右向上延伸 2 厘米\draw[help lines] (0,0) grid (2,2);
  • 每条路径执行两个动作\draw ( 0,0) ellipse (2cm and 1cm) node at (1.7,0) {R};
  • 首先,根据给定的 x 和 y 半径绘制一个椭圆
  • 其次通过节点放置一些文本(请注意缺失\
  • 向左移动,减小半径,并移动文本节点

结果

\documentclass[10pt,border=3mm,tikz]{standalone}
\usepackage{tikz}

\begin{document}
 \begin{tikzpicture}
    \draw[help lines] (0,0) grid (2,2);
    \draw (  0,0) ellipse (2cm and 1cm)     node at (1.7,0) {R};
    \draw (-.2,0) ellipse (1.7cm and .9cm)  node at (1.3,0) {Q};
    \draw (-.4,0) ellipse (1.4cm and .8cm)  node at (.7,0) {Z};
 \end{tikzpicture}
\end{document}

附言:只是为了好玩,接近超音速……

乐趣

\documentclass[10pt,border=3mm,tikz]{standalone}
\usepackage{tikz}
\usepackage{fontawesome}

\begin{document}
 \begin{tikzpicture}
    \draw[help lines] (0,0) grid (2,2);
    \draw (  0,0) ellipse (2cm and 1cm)     node at (1.7,0) {R};
    \draw (-.2,0) ellipse (1.7cm and .9cm)  node at (1.3,0) {Q};
    \draw (-.4,0) ellipse (1.4cm and .8cm)  node at (.7,0) {Z};
    \node[rotate=180] at (-1.6,0) {\faFighterJet};
 \end{tikzpicture}
\end{document}

相关内容