如何在维恩图图例中重叠图案?

如何在维恩图图例中重叠图案?

我使用 绘制了一个维恩图tikzpicture,不同的圆圈用不同的图案填充。我还使用 将matrix图的图例绘制在侧面。为图的非重叠部分创建图例条目非常简单,因为它们只使用一种图案。但是如何在图例中指定两个重叠图案来指示图的重叠区域?

我迄今为止的代码:

\documentclass{book}
\usepackage{pgfplots,tikz}
\usetikzlibrary{matrix,patterns,positioning,svg.path}
\begin{document}
\begin{center}
  \begin{tikzpicture}[
  1/.style={shape=rectangle, pattern=north east lines},
  2/.style={shape=rectangle, pattern=north west lines},
  3/.style={shape=rectangle, pattern=vertical lines},
  4/.style={shape=rectangle, pattern=dots}
  ]
    \begin{scope}[local bounding box=venn]
      \fill[1] (135:1) circle (2);
      \fill[2]        ( 45:1) circle (2);
      \fill[3]        (-90:1) circle (2);
    \end{scope}
    \matrix [draw,right=1em of venn]{
      \node [1,label=right:1] {}; \\
      \node [2,label=right:2] {}; \\
      \node [3,label=right:3] {}; \\
      \node [4,label=right:4] {}; \\
    };
  \end{tikzpicture}
\end{center}
\end{document}

您可能已经猜到了,图例中的第四个条目应该指的是图表的中心,但我用它来代替它了,dots因为我不知道如何重叠所有三个模式。

答案1

您可以使用postactions 来叠加图案。我添加了

\node [1,postaction=2,label=right:$1\cup 2$] {}; \\

来说明这一点。您可以拥有多个postaction

\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{matrix,patterns,positioning}
\begin{document}
\begin{center}
  \begin{tikzpicture}[
  1/.style={shape=rectangle, pattern=north east lines},
  2/.style={shape=rectangle, pattern=north west lines},
  3/.style={shape=rectangle, pattern=vertical lines},
  4/.style={shape=rectangle, pattern=dots}
  ]
    \begin{scope}[local bounding box=venn]
      \fill[1] (135:1) circle (2);
      \fill[2]        ( 45:1) circle (2);
      \fill[3]        (-90:1) circle (2);
    \end{scope}
    \matrix [draw,right=1em of venn]{
      \node [1,label=right:1] {}; \\
      \node [2,label=right:2] {}; \\
      \node [3,label=right:3] {}; \\
      \node [4,label=right:4] {}; \\
      \node [1,postaction=2,label=right:$1\cap 2$] {}; \\
    };
  \end{tikzpicture}
\end{center}
\end{document}

在此处输入图片描述

答案2

这是我的建议。颜色会根据选项自动混合[opacity=.5]在此处输入图片描述

\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{center}
\begin{tikzpicture}[opacity=.5]
\fill[red] (135:1) circle (2);
\fill[blue] (45:1)  circle (2);
\fill[cyan] (-90:1) circle (2);

\path (4,0) node[matrix,draw]{
\node[fill=red,label=right:A] {}; \\
\node[fill=blue,label=right:B] {}; \\
\node[fill=cyan,label=right:C] {}; \\
\node[fill=red!50!blue!50!cyan,label=right:G] {}; \\
};
\end{tikzpicture}
\end{center}
\end{document}

相关内容