我想创建一个类似于的 PID 控制器框图这里。目前我的图表如下所示。我还需要将矩形节点内的文本左右对齐,即我希望字母 P、I、D 位于左侧,而方程式位于右侧。我该如何实现这一点?另外,您能告诉我如何将圆圈缩小一点吗?
\tikzstyle{int}=[draw, fill=blue!20, minimum size=2em, text width=2.5cm]
\tikzstyle{sum}=[draw, fill=blue!20, shape=circle, node distance=2.5cm]
\begin{figure}[htbp]
\centering
\begin{tikzpicture}[node distance=1.5cm,auto,>=latex']
\node [int] (kp) {P $k_p e(t)$};
\node [int] (ki) [below of=kp] {I $k_i \int{e(t)dt}$};
\node [int] (kd) [below of=ki] {D $k_d \frac{e(t)}{dt}$};
\node [sum] (sum) [right of=ki] {$\sum$};
\node [coordinate] (joint1) [left of=ki, node distance=2cm]{};
\node [coordinate] (begin) [left of=joint1, node distance=2cm]{};
\node [coordinate] (end) [right of=sum, node distance=2cm]{};
\draw[-] (begin) -- node {$e(t)$} (joint1);
\draw[->] (joint1) |- (kp.west);
\draw[->] (joint1) -- (ki);
\draw[->] (joint1) |- (kd);
\draw[->] (kp.east) -| node [pos=0.95] {$+$} (sum.north);
\draw[->] (ki.east) -- node [pos=0.8] {$+$} (sum.west);
\draw[->] (kd.east) -| node [pos=0.95] {$+$} (sum.south);
\draw[->] (sum.east) -- (end);
\end{tikzpicture}
\end{figure}
答案1
您可以\hfill
在字母和公式之间使用 来同时进行左右调整。text width
但这只有在您明确指定 时才有效(就像您在代码中所做的那样)。
要减小圆圈的尺寸,您必须减小inner sep
(默认设置为2pt
)。如果您希望节点更小,您必须选择较小的字体大小(font=\small
例如使用),或者使用缩放节点scale=<value>
。
这是一个最小的例子(这也是在问题中发布代码的首选形式,因为它省去了人们猜测所需库/包的麻烦,并确保代码实际上是完整的):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\tikzstyle{int}=[draw, fill=blue!20, minimum size=2em, text width=2.5cm]
\tikzstyle{sum}=[draw, fill=blue!20, shape=circle, inner sep=1pt, node distance=2.5cm]
\begin{figure}[htbp]
\centering
\begin{tikzpicture}[node distance=1.5cm,auto,>=latex']
\node [int] (kp) {P\hfill$k_p e(t)$};
\node [int] (ki) [below of=kp] {I\hfill$k_i \int{e(t)dt}$};
\node [int] (kd) [below of=ki] {D\hfill$k_d \frac{e(t)}{dt}$};
\node [sum] (sum) [right of=ki] {$\sum$};
\node [coordinate] (joint1) [left of=ki, node distance=2cm]{};
\node [coordinate] (begin) [left of=joint1, node distance=2cm]{};
\node [coordinate] (end) [right of=sum, node distance=2cm]{};
\draw[-] (begin) -- node {$e(t)$} (joint1);
\draw[->] (joint1) |- (kp.west);
\draw[->] (joint1) -- (ki);
\draw[->] (joint1) |- (kd);
\draw[->] (kp.east) -| node [pos=0.95] {$+$} (sum.north);
\draw[->] (ki.east) -- node [pos=0.8] {$+$} (sum.west);
\draw[->] (kd.east) -| node [pos=0.95] {$+$} (sum.south);
\draw[->] (sum.east) -- (end);
\end{tikzpicture}
\end{figure}
\end{document}