Venndiagram パッケージの複数の色

Venndiagram パッケージの複数の色

パッケージを使用してベン図を作成していますvenndiagram。ドキュメントではシェーディング カラーを変更することができますが、ベン図のさまざまな部分をさまざまな色でシェーディングする方法がわかりません。理想的には、左側に黄色、右側に青を使用し、中央でそれらをブレンドしたいと思います。

tikzpicture重なり合う円として描画することでこれが実行できることはわかっています。ただし、私はすでにベン図パッケージを使用しており、その機能が気に入っています。そのため、手動で設定するのではなく、これで実行できることを期待しています。\fill含まれているコマンドで実行できるはずですが、うまく機能しないようです。

\documentclass{book}
\usepackage{tikz}
\usepackage{venndiagram}     
\begin{document}
\pagestyle{empty}
    \begin{venndiagram2sets}[labelA={},labelB={}, labelOnlyA={E}, labelOnlyB={F}, labelAB={$E\cap F$}, showframe={false}, radius = {2cm}, overlap={1.5cm}]
    \end{venndiagram2sets}
\end{document} 

答え1

次のように、マクロを使用して環境\setkeys{venn}{...}内のオプションを変更できますvenndiagramm

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

\begin{document}
\pagestyle{empty}
\begin{venndiagram2sets}[
    labelA={},
    labelB={},
    labelOnlyA={$E$}, 
    labelOnlyB={$F$}, 
    labelAB={$E\cap F$}, 
    showframe={false}, 
    radius={2cm}, 
    overlap={1.5cm}
]

\setkeys{venn}{shade=yellow}
\fillA

\setkeys{venn}{shade=cyan}
\fillB

\setkeys{venn}{shade=yellow!50!cyan}
\fillACapB

\end{venndiagram2sets}
\end{document} 

ここに画像の説明を入力してください

答え2

ラベルEを左にシフトしたり、ラベルをF右にシフトしたりするなど、より多くのコントロールを取得するための 2 つの代替手段を示します。

プレーンTikZ

ここに画像の説明を入力してください

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[declare function={r=1.5;d=.9;}]
\def\pathE{(-d,0) circle(r)}
\def\pathF{(d,0) circle(r)}

\fill[yellow] \pathE;
\fill[cyan] \pathF;

\begin{scope}
\clip \pathE;
\fill[yellow!50!cyan] \pathF;
\end{scope}

\draw (0,0) node{$E\cap F$}
\pathE node[left]{$E$} 
\pathF node[right]{$F$}
;
\end{tikzpicture}
\end{document}

平らな漸近線

ここに画像の説明を入力してください

// http://asymptote.ualberta.ca/
size(5cm);
pair A=(0,0), B=(1,0);
path pathL=circle(A,1);
path pathR=circle(B,1);
// https://tex.stackexchange.com/a/9698/140722
path inter=buildcycle(arc(A,1,-90,90),arc(B,1,90,270));
pen penL=lightblue;
pen penR=lightgreen;
fill(pathL,penL);
fill(pathR,penR);
fill(inter,penL+penR);
draw(pathL^^inter^^pathR);
label("$E$",align=5W,A);
label("$F$",align=5E,B);
label("$E\cap F$",(A+B)/2);

//shipout(bbox(5mm,invisible));

関連情報