如何在tikz-er2中为一个节点绘制8条以上的边

如何在tikz-er2中为一个节点绘制8条以上的边

我是 LaTeX 新手,所以请原谅我的初学者问题。因此,在 tikz-er2 中的节点定位中,我们可以将节点定位在相对于一个节点的 8 个不同位置(上方、右上方、左上方、下方、右下方、左下方、右侧和左侧)。我的问题是

  1. 如果我与一个实体有超过 8 个属性和关系(在本例中我有 12 个)怎么办?

  2. 我可以从实体中的同一点绘制多条边,以便它看起来像图中那样吗?在此处输入图片描述

答案1

1)如果您手动定位,则可以添加其他人。

2)例如,您可以明确连接到node.east。

这是根据手册改编的示例。

\documentclass{article}

\usepackage{tikz}
\usepackage{tikz-er2}
\usetikzlibrary{positioning}

\begin{document}
\tikzstyle{every attribute} = [fill=yellow!20]
\begin{tikzpicture}[node distance=7em]
    \node[entity] (person) {Person};
    \node[attribute] (pid) [left of=person] {\key{ID}} edge (person);
    \node[attribute] (name) [above left of=person] {Name} edge (person); 
    \node[attribute] (name2) [left of=name, xshift=-5mm] {Other Name} edge (person); 
    \node[multi attribute] (phone) [above of=person] {Phone} edge (person);
    \node[attribute] (address) [above right of=person] {Address} edge (person);
    \node[attribute] (street) [above right of=address] {Street} edge (address);
    \node[attribute] (city) [right of=address] {City} edge (address);
    \node[derived attribute] (age) [right of=person] {Age} edge (person);
    \node[attribute] (gender) [below right of=person] {Gender} edge (person.east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您可以使用笛卡尔坐标或极坐标将节点明确定位在特定坐标处(并连接到它们)。绘制线条时,您还可以相对于当前位置指定目标节点,方法是在笛卡尔坐标或极坐标前加上++++当前位置保持原位,++当前位置移动到新坐标)。

在此处输入图片描述

\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\tikzset{dot/.style={circle,fill,draw,inner sep=1pt}}
\begin{tikzpicture}[node distance=1cm]
  \node[dot,label={[left]$a=(0,0)$}] (a) {};
  \node[dot,label=above $a$] (b) [above=of a] {};
  \node[dot,label={$(2,1)$}] (c) at (2,1) {};
  \node[dot,label={[right]{$(-30^\circ:2\mathrm{cm})$}}] (d) at (-30:2) {};
  \draw (a) -- (b);
  \draw (a) -- (c);
  \draw (a) -- (d);
  \node[draw] (e) at (5,0) {e};
  \foreach \angle in {0, 10, ..., 350}
    \draw (e) -- +(\angle:1);
\end{tikzpicture}
\end{document}

答案3

如果节点没有固定的位置,但是它们之间存在几种关系,那么您可以使用graphdrawing来自的库tikz(它使用了 LuaLaTeX,所以如果这不是一个选项,请考虑这一点)。

您可以使用以下命令绘制如下关系\graph

\graph{A -- {B,C,D,E,F,G,H}, F--B};

这意味着从B到 的所有节点H都连接到A并且F连接到B。布局必须从可用布局中选择,这个决定主要取决于您想要的结果图,因此由于您没有显示示例,因此我随意simple necklace layoutcircular图形绘制库中选择 。

与前面的示例相同的 MWE:

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs, graphdrawing}
\usegdlibrary{circular}
\begin{document}
    \begin{tikzpicture}
        \graph[simple necklace layout, grow=right]{ A[regardless at={(0,0)}] --[tail anchor=east] {B,C,D,E,F,G,H}, F--B};
    \end{tikzpicture}
\end{document}

结果是

在此处输入图片描述

相关内容