使用定义为节点的路径进行剪辑

使用定义为节点的路径进行剪辑

我用椭圆来表示集合,并想画出两个集合之间的差异:B - A(下图中的蓝色区域)。

请考虑以下代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes, positioning}

\begin{document}

\begin{tikzpicture}

\def\A{(0,0) ellipse (2cm and 3cm)}
\def\B{(2,0) ellipse (3cm and 2cm)}

\draw[red] \A;
\draw[green] \B;

\begin{scope}
 \clip \B;
 \fill[blue,even odd rule] \B \A;
\end{scope}

\end{tikzpicture}
\end{document}

产生:

集合差

但是,我使用 s 来定义省略号node,因为我需要为它们指定名称。基本上,我的省略号定义为:

\node [draw,transform shape, fill=blue!5,draw=blue,line width=1pt,ellipse,minimum width=2cm,minimum height=1.5cm] (TP) at (1.2,2) {};

基本上,我使用\node它来代替更简单的椭圆路径,因为我想要这个TP名字。

\node如果我尝试使用用而不是定义的椭圆来绘制集合差异(0,0) ellipse (2cm and 3cm),则编译会失败。

我有两个问题:

  • Q1 )我可以给上面代码中定义的省略号命名吗(即不使用node)?

  • Q2)如何使用剪辑\node并获得与上图相同的结果?

有一个与此类似的问题,但我无法理解答案(太复杂): 使用节点剪切路径

这是我正在使用的实际 tikz 图片:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes, positioning}

\begin{document}
\begin{tikzpicture}[scale=3]
% frame
\node [draw, transform shape, rectangle, minimum width=5cm, minimum height=3cm, anchor=south west] (F) at (0,0) {};
\node [below left] at (F.north east) {$U$};

\node [draw,transform shape, fill=blue!5,draw=blue,line width=1pt,ellipse,minimum width=2cm,minimum height=1.5cm] (TP) at (1.2,2) {};
\node [right] at (TP.west) {$A$};

\node [draw,transform shape,fill=red!5,draw=red,line width=1pt,ellipse,minimum width=2cm,minimum height=1.5cm] (TN) at (3.8,1) {};
\node [left] at (TN.east) {$B$};

\node [draw,transform shape,fill=green!5,draw=green, fill opacity=0.5, line width=1pt,ellipse,minimum width=2.5cm,minimum height=2cm] (COV) at (2.3,1.2) {};
\node [below right] at (COV.west) {$C$};

\end{tikzpicture}
\end{document}

在此处输入图片描述

从那张图片开始,我需要绘制:

  • A
  • C - A

我使用椭圆来定义它,\node因为我需要它们的名称作为锚点。

相关内容