Tikz:更改子图中文本的位置

Tikz:更改子图中文本的位置

我正在尝试使用新的 Tikz 功能绘制子图和 DAG,但是在将子图的文本移动到不重叠的地方时遇到了问题。

理想情况下,在下面的例子中,我想将“in(S)”文本向右移动,但我不知道如何做到这一点

\documentclass{article}

\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{layered}

\begin{document}

\tikzstyle{input}=[circle, thick,draw=blue!75,fill=blue!20,minimum size=5mm]
\tikzstyle{fixed}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=6mm]
\tikzstyle{bitwise}=[fixed, draw=green!75, fill=green!20]
\tikzstyle{sub}=[draw, rectangle, fill=red!30, opacity=.2]

\tikz \graph [layered layout, nodes={bitwise}, level sep=1cm] {
{{{a[input], b[input]} -> 1, c[input]} -> 3, {{c, {d[input], e[input]} -> 2} -> 4}} -> 6;
{f[input], 2 -> 5[fixed]} -> 7;
{5, g[input]} -> 8;
S[sub] // {3, 4, 6};
$in(S)$[sub] // {1, c, 2}
};

\end{document}

结果

感谢您的帮助 !

答案1

使用$in(S)$[sub] // {1, c, 2},您可以指定一个子图,该子图在Z 手册(版本 3.0.1a)。如图所示,绘制了一个子图

// [layout options]{sublayout}

您可以使用以下任一方式指定子图文本的位置(在您的情况下$in(S)$

  • subgraph text top=<text alignment options>(将文本放在子图的顶部)。
  • subgraph text bottom=<text alignment options>(将文本放在子图的底部)”。

这里<text alignment options>可以是你在 Ti 中使用的任何对齐方式Z,例如

subgraph text top={align=right}
subgraph text top=text centered

有了text centered,子图标题放置得相当好:

结果

答案2

我本来打算将此作为评论发布,但从您的 MWE 生成示例非常简单。您还可以标记子图,将标签放在边界框之外,如下所示。

\documentclass{article}

\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{layered}

\begin{document}

\tikzstyle{input}=[circle, thick,draw=blue!75,fill=blue!20,minimum size=5mm]
\tikzstyle{fixed}=[rectangle,thick,draw=black!75, fill=black!20,minimum size=6mm]
\tikzstyle{bitwise}=[fixed, draw=green!75, fill=green!20]
\tikzstyle{sub}=[draw, rectangle, fill=red!30, opacity=.2]

\tikz \graph [layered layout, nodes={bitwise}, level sep=1cm] 
{
 {{{a[input], b[input]} -> 1, c[input]} -> 3, {{c, {d[input], e[input]} -> 2} -> 4}} -> 6;
 {f[input], 2 -> 5[fixed]} -> 7;
 {5, g[input]} -> 8;
 / [label = left:S,sub]       // {3, 4, 6};
 / [label = left:$in(S)$,sub] // {1, c, 2}
};

\end{document}

文本作为标签而不是节点内的文本

相关内容