我希望创建一个包含 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}