如何移动 Tikz 节点的标题?

如何移动 Tikz 节点的标题?

我在用库来创建信号流图。要测试此功能,请包括这个包,这是库的更新版本,在文件夹和交换中signalflowgraph.sty输入\usepackage{signalflowgraph}

我想移动节点的标题。对于简单的上下左右移动,使用 \nodepart 似乎就足够了,但据我所知,这实际上将节点分成两部分。我想做的是将标题移动到“右上方”或“西北”,但无法做到这一点。我要做的是将 n2 的标题移到西北,并将 n1 的标题稍微向上移动。我尝试将其更改为

    \node[node, label={[above right]:$x_h[n-1]$}] (n2)
    {}; &&

但这会弄乱整个图形。

这是我的代码

\documentclass[
  a4paper,            
  DIV=10,             
  oneside,           
  BCOR=5mm,           
  parskip=half,       
  numbers=noenddot,  
  bibtotoc,          
  listof=totoc        
]{scrreprt}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{signalflowdiagram}

\begin{document}

\begin{tikzpicture}
  [every node/.style={anchor=center}]
  \matrix (m) [minimum width=6in,
    row sep=10mm,
    column sep=10mm]
  {%
    % row 1
    \node[input] (in)
    {$x[n]$}; &
    \node[adder] (a1)
    {}; &&&
    \node[node] (n1)
    {\nodepart{above}{$x_h[n]$}}; &&
    \node[multiplier] (m1)
    {\nodepart{above}{-c}}; &
    \node[adder] (a2)
    {}; &
    \node[output] (out)
    {$y[n]$}; \\ &&&&

    % row 2
    \node[delay] (d1)
    {$z^{-1}$}; \\ &

    % row 3
    \node[adder] (a3)
    {}; &
    \node[multiplier] (m2)
    {\nodepart{above}{-d(1-c)}}; &&
    \node[node] (n2)
    {\nodepart{above}{$x_h[n-1]$}}; &&
    \node[multiplier] (m3)
    {\nodepart{above}{d(1-c)}}; &
    \node[adder] (a4)
    {}; \\ &&&&

    % row 4
    \node[delay=west] (delay2)
    {$z^{-2}$}; \\ &&

    % row 5
    \node[multiplier] (m4)
    {\nodepart{above}{c}}; &&
    \node[node] (n3)
    {\nodepart{below}{$x_h[n-2]$}}; &
        \\
  };

  \path[r>] (in) -- (a1);
  \path[r>] (a1) -- (n1);
  \path[r>] (n1) -- (m1);
  \path[r>] (m1) -- (a2);
  \path[r>] (a2) -- (out);

  \path[r>] (n1) -- (d1);
  \path[r>] (d1) -- (n2);
  \path[r>] (n2) -- (delay2);
  \path[r>] (delay2) -- (n3);

  \path[r>] (n2) -- (m2);
  \path[r>] (m2) -- (a3);
  \path[r>] (n2) -- (m3);
  \path[r>] (m3) -- (a4);

  \path[r>] (n3) -- (m4);
  \path[r>] (m4) -| (a3);
  \path[r>] (n3) -| (a4);
  \path[r>] (a4) -- (a2);
  \path[r>] (a3) -- (a1);
\end{tikzpicture}

\end{document}

和图像

在此处输入图片描述

答案1

只需按照/扫描/搜索官方教程来解决此类常见问题即可图表作为简单图形节目解决任务的可能方法:

只需添加具有相对定位的附加节点来保存您的标题。这将标签与线矩阵的刚性结构分离。Tikzlibrarypositioning提供了有用的above right=of <node-name>符号,并结合指定node distance=<x>mm and <dy>mm我始终获得一致的间距。应用于您的 n1、n2 和 n3 可得出:

具有固定标签位置的信号流图(不再与中心节点冲突)

代码

\documentclass[
  a4paper,            
  DIV=10,             
  oneside,           
  BCOR=5mm,           
  parskip=half,       
  numbers=noenddot,  
  bibtotoc,          
  listof=totoc        
]{scrreprt}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{signalflowdiagram}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}
  [every node/.style={anchor=center},
   node distance=1mm and 1mm]
  \matrix (m) [
    minimum width=6in,
    row sep=10mm,
    column sep=10mm]
  {%
    % row 1
    \node[input] (in)
    {$x[n]$}; &
    \node[adder] (a1)
    {}; &&&
    \node[node] (n1) {}; &&
    \node[multiplier] (m1)
    {\nodepart{above}{-c}}; &
    \node[adder] (a2)
    {}; &
    \node[output] (out)
    {$y[n]$}; \\ &&&&

    % row 2
    \node[delay] (d1)
    {$z^{-1}$}; \\ &

    % row 3
    \node[adder] (a3)
    {}; &
    \node[multiplier] (m2)
    {\nodepart{above}{-d(1-c)}}; &&
    \node[node] (n2)
    {\nodepart{above}{}}; &&
    \node[multiplier] (m3)
    {\nodepart{above}{d(1-c)}}; &
    \node[adder] (a4)
    {}; \\ &&&&

    % row 4
    \node[delay=west] (delay2)
    {$z^{-2}$}; \\ &&

    % row 5
    \node[multiplier] (m4)
    {\nodepart{above}{c}}; &&
    \node[node] (n3) {}; &
        \\
  };

  \path[r>] (in) -- (a1);
  \path[r>] (a1) -- (n1);
  \path[r>] (n1) -- (m1);
  \path[r>] (m1) -- (a2);
  \path[r>] (a2) -- (out);

  \path[r>] (n1) -- (d1);
  \path[r>] (d1) -- (n2);
  \path[r>] (n2) -- (delay2);
  \path[r>] (delay2) -- (n3);

  \path[r>] (n2) -- (m2);
  \path[r>] (m2) -- (a3);
  \path[r>] (n2) -- (m3);
  \path[r>] (m3) -- (a4);

  \path[r>] (n3) -- (m4);
  \path[r>] (m4) -| (a3);
  \path[r>] (n3) -| (a4);
  \path[r>] (a4) -- (a2);
  \path[r>] (a3) -- (a1);
  
  \node[above=of n1] (n1caption) {$x_h[n]$};
  \node[above right=of n2] (n2caption) {$x_h[n-1]$};
  \node[below=of n3] (n3caption) {$x_h[n-2]$};
\end{tikzpicture}

\end{document}

c对于您的其他乘数(-c等),这种间距可能也会对图表有益。

相关内容