带有 4 组图的文氏图:如何修改 .sty 文件

带有 4 组图的文氏图:如何修改 .sty 文件

我在这个链接中提到了我的问题二集图和三集图:venndiagram 包特别是 3 套。

\documentclass[a4paper,12pt]{article}
\usepackage{venndiagram}
\begin{document}
\begin{venndiagram3sets}[labelOnlyA={4},labelOnlyB={5},labelOnlyC={7},
labelOnlyAB={3},labelOnlyAC={2},labelOnlyBC={1},labelABC={9},
labelNotABC={8}]
\setpostvennhook{\node[above right] at (venn top right){$|U|=50$};}
\end{venndiagram3sets}
\end{document}

在此处输入图片描述

包裹文图已过时(2018-06-07)。是否可以更改venndiagram.sty指南文件中包含的内容,将 A、B、C 放在集合之外,并构造一个具有 4 个维恩集的图表,该图表具有与用 3 个圆周构造的维恩集相同的特征?我无法更改venndiagram.sty,请在此处联系包的作者 Nicola LC Talbothttps://www.dickimaw-books.com/latexresources.html和这里https://www.goodreads.com/author/show/8503877.Nicola_L_C_Talbot。事实上,没有电子邮件可以联系作者。我也非常希望你能帮助我一所科学高中的一年级学生。

答案1

更新的解决方案

自动化执行起来并不复杂。下面这个命令\VennFour接受一个必需参数,即以逗号分隔的区域/内容列表。例如,

\VennFour{a/2, bc/5, bcd/37, abc/33, abcd/3}

将在只有 A 的子集中放置 2,在只有 B 和 C 但不包含 A 或 D 的子集中放置 5。缺失区域留空。外部区域使用标签o。标签U可用于右上角的通用集。

在此处输入图片描述

可选参数可用于 Ti适用于整个画面的 Z 选项。例如,

\VennFour[scale=.8, transform shape]{a/2, bc/5, bcd/37, abc/33, abcd/3}

将会缩放整个图片。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\tikzset{ellip/.style={ellipse, draw, thick,
    minimum height=3cm, minimum width=6cm, rotate=#1
}}

\newcommand{\VennFour}[2][]{\begin{tikzpicture}[#1]
    \draw[thick] (-5,-4) rectangle (5,3);
    \coordinate(U) at (5,3.3);
    \node[ellip=-35, label=160:$A$] (A) at (0,0){}; \node[ellip=35, label=20:$B$] (B) at (0,0){};
    \node[ellip=-30, label=270:$C$] (C) at (-1.5,-1){}; \node[ellip=30, label=270:$D$] (D) at (1.5,-1){};
    \coordinate(a)at(-1.6,1.5); \coordinate(b)at(1.6,1.5); \coordinate(c)at(-3.2,0); \coordinate(d)at(3.2,0);
    \coordinate(ab)at(0,.8); \coordinate(cd)at(0,-2.4); \coordinate(ac)at(-2.1,.55);
    \coordinate(bd)at(2.1,.55); \coordinate(ad)at(1.9,-1.3); \coordinate(bc)at(-1.9,-1.3);
    \coordinate(abc)at(-1.1,-.2); \coordinate(abd)at(1.1,-.2); \coordinate(acd)at(.75,-1.7); \coordinate(bcd)at(-.75,-1.7);
    \coordinate(abcd)at(0,-1.1); \coordinate(o)at(0,-3.5);
    \foreach \s/\n in {#2} {\node at (\s){\n};}
\end{tikzpicture}}

\begin{document}

\VennFour{U/$|U|=\;?$, a/2, bc/5, bcd/37, abc/33, abcd/3, b/25, c/9, d/12, ac/0, bd/10, ab/23, abd/11, ad/1, acd/6, cd/15, o/4}

\end{document}

原始解决方案

我不熟悉这个venndiagram包,但我在文档中没有看到任何内容表明它适用于三个以上的集合。特别是,超过三个集合的维恩图不能由圆形组成,而集合数为合数的维恩图不能旋转对称。[例如,参见 F. Ruskey、C. Savage 和 S. Wagon,寻找简单对称维恩图, 美国数学会刊 53 (2006) 1304–1312.]

这是从头开始绘制的具有全等椭圆的版本。

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\tikzset{venn/.style={ellipse, draw, thick,
    minimum height=3cm, minimum width=6cm, rotate=#1
}}

\begin{document}

\begin{tikzpicture}
\draw[thick] (-5,-4) rectangle (5,3)node[above right]{$|U|=n$};
\node[venn=-35, label=160:$A$] (A) at (0,0){};
\node[venn=35, label=20:$B$] (B) at (0,0){};
\node[venn=-30, label=270:$C$] (C) at (-1.5,-1){};
\node[venn=30, label=270:$D$] (D) at (1.5,-1){};
\node at ([shift=(-20:.9)]A.180){1};\node at ([shift=(200:.9)]B.0){2};
\node at ([shift=(-35:1.1)]C.180){3};\node at ([shift=(215:1.1)]D.0){4};
\node at ([shift=(90:.8)]A.center){5};
\node at ([shift=(40:.8)]B.180){8};\node at ([shift=(140:.8)]A.0){7};
\node at ([shift=(-72:1.25)]A.180){6};\node at ([shift=(252:1.25)]B.0){9};
\node at (0,-2.4){10};
\node at (-1.1,-.2){11};\node at (1.1,-.2){12};
\node at (-.8,-1.7){13};\node at (.8,-1.7){14};
\node at (0,-1){15};\node at (0,-3.5){16};
\end{tikzpicture}

\end{document}

相关内容