我需要绘制一个维恩图,其中扇区内有长文本。我的尝试借鉴了一个例子:
\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds}
\begin{document}
\pagestyle{empty}
\def\firstcircle{(0,0) circle (2.5cm)}
\def\secondcircle{(60:2.5cm) circle (2.5cm)}
\def\thirdcircle{(0:2.5cm) circle (2.5cm)}
\begin{tikzpicture}
\begin{scope}[shift={(3cm,-1.5cm)}, fill opacity=0.25]
\fill[red] \firstcircle;
\fill[green] \secondcircle;
\fill[blue] \thirdcircle;
\draw \firstcircle node[below] {$Word_1$};
\draw \secondcircle node[above] {$Word_2$};
\draw \thirdcircle node[below] {$Word_3$};
\end{scope}
\end{tikzpicture}
\end{document}
执行结果为:
我希望单词(Word_1、Word_2、Word_3)可以沿着圆圈的边框放置。但是如果没有足够的空间放置文本怎么办(对于 Word_12、Word_13、Word_23 的情况,尤其是 Word_123)。文本大小无法更改。例如,可以将签名移到小扇区之外。
问题。是否有用于文本放置自动化的工具?
答案1
我对上述代码中的大部分问题进行了轻微的修改:
- 这样一来,文字就几乎看不见了
- 范围说明后的转变似乎没有什么用
- (0,0)是“Word_1”的位置……最好位于所有交叉点的正中心
- 只需将一些带有长文本的节点放在外面即可
- 画一条线来表示你指的是哪个字段
- 对于发展来说,阶级
standalone
是更好的
%\documentclass{article}
\documentclass[10pt,border=3mm,tikz]{standalone}
%\usepackage{graphicx}
%\usepackage{tikz}
\usetikzlibrary{shapes,backgrounds}
\usetikzlibrary{arrows.meta}
\begin{document}
%\pagestyle{empty}
\def\firstcircle{(0,0) circle (2.5cm)}
\def\secondcircle{(60:2.5cm) circle (2.5cm)}
\def\thirdcircle{(0:2.5cm) circle (2.5cm)}
\begin{tikzpicture}
\begin{scope}[fill opacity=0.25]
\fill[red] \firstcircle;
\fill[green] \secondcircle;
\fill[blue] \thirdcircle;
% \draw \firstcircle node[below] {$Word_1$};
\draw \secondcircle node[above] {$Word_2$};
% \draw \thirdcircle node[below] {$Word_3$};
\end{scope}
% ~~~ making text readable again ~~~~~~~~~~~~
\draw \firstcircle node[shift=(220:13mm)] {$Word_1$ !};
% \draw \secondcircle node[above] {$Word_2$};
\draw \thirdcircle node[below] {$Word_3$};
% ~~~ putting some label outside ~~~~~
\node[align=left] (A) at (-4,3)
{Here's some longer text\\with some breaks};
% ~~~ connector, with some options, e.g. using polar coordinates for anchor
\draw[dashed,blue,-{Circle[]}] (A.220) -- (0,1.5);
\end{tikzpicture}
\end{document}