tikzpicture節點修復節點大小

tikzpicture節點修復節點大小

我想畫一個像這樣的多層感知器:

在此輸入影像描述

我創建了以下程式碼:

\documentclass[tikz, margin=3mm] {standalone}
\usetikzlibrary{arrows.meta, matrix}

\begin{document}
\begin{tikzpicture}[
> = Stealth, thick,
plain/.style = {draw=none, fill=none, yshift=11mm, text width=7ex,  align=center},% for text in images, 
ec/.style = {draw=none, fill=none},% for emty cells,
net/.style = {matrix of nodes, % for matrix style
nodes={circle,fill=blue!20, draw, semithick, minimum width=12mm, inner sep=0mm},% circles in image
nodes in empty cells,% for not used cells in matrix
column sep = 16mm, % distance between columns in matrix 
row sep = -3mm  % distance between rows in matrix
}]


\matrix[net] (m)% m is matrix name, it is used for names of cell: firs has name m-1-1
                % in empty space between ampersands will show circles: 
                % i.e.: nodes of the neural network
{
|[plain]| Input layer & |[plain]| Hidden layer  & |[plain]| Output layer  \\
|[ec]|                & |[ec]|                  & |[ec]|                  \\
                      & -1                      & |[ec]|                  \\
|[ec]|                & |[ec]|                  & |[ec]|                  \\
|[ec]|                & |[ec]|                  & 3                        \\
|[ec]|                & |[ec]|                  & |[ec]|                    \\
                      & -1                      & |[ec]|                    \\
|[ec]|                & |[ec]|                  & |[ec]|                     \\
};      

\draw[<-] (m-3-1) -- node[left, xshift=-0.65cm] {$x_1$} +(-2cm,0);
\draw[<-] (m-7-1) -- node[left, xshift=-0.65cm] {$x_2$} +(-2cm,0);

\draw[->] (m-5-3) -- node[right, xshift=0.65cm] {$y$} +(2cm,0);

\draw[->] (m-3-1) -- node[above] {$-2$} (m-3-2);
\draw[->] (m-3-1) -- node[below, yshift=-0.75cm, xshift=-0.5cm] {$2$} (m-7-2);

\draw[->] (m-7-1) -- node[above, yshift=0.75cm, xshift=-0.5cm] {$2$} (m-3-2);
\draw[->] (m-7-1) -- node[below] {$-2$} (m-7-2);

\draw[->] (m-3-2) -- node[above] {$2$} (m-5-3);
\draw[->] (m-7-2) -- node[below] {$2$} (m-5-3);

\end{tikzpicture}
\end{document}

這是上面的輸出:

在此輸入影像描述

問題是,每當我刪除第一層中的節點時,tikz 繪圖都是不對稱的。當我在其中畫一個“1”時,圖片是對稱的。

那我該如何解決這個問題呢?我嘗試調整最小尺寸,但這沒有幫助。

謝謝你!

答案1

如果將內部節點錨點保持為(圖表將再次對稱),則Amatrix of nodes將內部節點錨點變更為。basecenternodes={... anchor=center}

\documentclass[tikz, margin=3mm] {standalone}
\usetikzlibrary{arrows.meta, matrix}

\begin{document}
\begin{tikzpicture}[
> = Stealth, thick,
plain/.style = {draw=none, fill=none, yshift=11mm, text width=7ex,  align=center},% for text in images, 
ec/.style = {draw=none, fill=none},% for emty cells,
net/.style = {matrix of nodes, % for matrix style
nodes={circle,fill=blue!20, draw, semithick, minimum width=12mm, inner sep=0mm, anchor=center},% circles in image
nodes in empty cells,% for not used cells in matrix
column sep = 16mm, % distance between columns in matrix 
row sep = -3mm  % distance between rows in matrix
}]


\matrix[net] (m)% m is matrix name, it is used for names of cell: firs has name m-1-1
                % in empty space between ampersands will show circles: 
                % i.e.: nodes of the neural network
{
|[plain]| Input layer & |[plain]| Hidden layer  & |[plain]| Output layer  \\
|[ec]|                & |[ec]|                  & |[ec]|                  \\
                      & -1                      & |[ec]|                  \\
|[ec]|                & |[ec]|                  & |[ec]|                  \\
|[ec]|                & |[ec]|                  & 3                        \\
|[ec]|                & |[ec]|                  & |[ec]|                    \\
                      & -1                      & |[ec]|                    \\
|[ec]|                & |[ec]|                  & |[ec]|                     \\
};      

\draw[<-] (m-3-1) -- node[left, xshift=-0.65cm] {$x_1$} +(-2cm,0);
\draw[<-] (m-7-1) -- node[left, xshift=-0.65cm] {$x_2$} +(-2cm,0);

\draw[->] (m-5-3) -- node[right, xshift=0.65cm] {$y$} +(2cm,0);

\draw[->] (m-3-1) -- node[above] {$-2$} (m-3-2);
\draw[->] (m-3-1) -- node[below, yshift=-0.75cm, xshift=-0.5cm] {$2$} (m-7-2);

\draw[->] (m-7-1) -- node[above, yshift=0.75cm, xshift=-0.5cm] {$2$} (m-3-2);
\draw[->] (m-7-1) -- node[below] {$-2$} (m-7-2);

\draw[->] (m-3-2) -- node[above] {$2$} (m-5-3);
\draw[->] (m-7-2) -- node[below] {$2$} (m-5-3);

\end{tikzpicture}
\end{document}

在此輸入影像描述

相關內容