Я хотел бы нарисовать следующую картину:
Ниже приведен мой код латекса:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}
\tikzset{
arro/.style={
->,
>=latex
},
bloque/.style={
draw,
minimum height=1cm,
minimum width=0.5cm
}
}
\begin{document}
\begin{tikzpicture}[]
\node[]
(input)
{Input};
\node[below=of input,label={left:$x_{1}$}]
(inputi)
{};
\node[below=of inputi,label={left:$x_{2}$}]
(inputii)
{};
\coordinate[below=of inputii] (aux);
\node[below=of aux,label={left:$x_{3}$}]
(inputiii)
{};
\node[below=of inputiii,label={left:$+1$}]
(inputiv)
{};
\node[right=of input]
(proje)
{Projection};
\node[circle,label={above:\textsc{sum}}]
at (proje|-aux)
(projei)
{};
\node[right=of proje]
(out)
{Output};
\node[label={right:$h_{w,b}(x)$}]
at (out|-aux)
(outi)
{};
\foreach \Valor in {i,ii,iii,iv}
{
\draw[arro] (input\Valor) -- (projei);
}
\draw[arro] (projei) -- (outi);
\end{tikzpicture}
\end{document}
Я пытаюсь добавить следующий код:\begin{tikzpicture}[every node/.style={draw=black,circle}]
Может ли кто-нибудь мне помочь? Спасибо!
решение1
Вы почти ответили на вопрос сами, но вы не хотите рисовать контур каждого узла, только одного. Поэтому вам нужно добавить draw
как опцию только к этому одному узлу. Чтобы увеличить размер, вы можете добавить minimum size=1cm
также , и добавить название цвета, если вы хотите изменить цвет.
В коде ниже я только что добавил одну строку, обозначенную комментарием.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}
\tikzset{
arro/.style={
->,
>=latex
},
bloque/.style={
draw,
minimum height=1cm,
minimum width=0.5cm
}
}
\begin{document}
\begin{tikzpicture}[]
\node[]
(input)
{Input};
\node[below=of input,label={left:$x_{1}$}]
(inputi)
{};
\node[below=of inputi,label={left:$x_{2}$}]
(inputii)
{};
\coordinate[below=of inputii] (aux);
\node[below=of aux,label={left:$x_{3}$}]
(inputiii)
{};
\node[below=of inputiii,label={left:$+1$}]
(inputiv)
{};
\node[right=of input]
(proje)
{Projection};
\node[circle,
draw,minimum size=1cm,orange, %% <-- these are added
label={above:\textsc{sum}}]
at (proje|-aux)
(projei)
{};
\node[right=of proje]
(out)
{Output};
\node[label={right:$h_{w,b}(x)$}]
at (out|-aux)
(outi)
{};
\foreach \Valor in {i,ii,iii,iv}
{
\draw[arro] (input\Valor) -- (projei);
}
\draw[arro] (projei) -- (outi);
\end{tikzpicture}
\end{document}
Я бы также предложил вам не использовать label
для входных узлов слева и выходного узла. С парой других незначительных изменений:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}
\tikzset{
arro/.style={
->,
>=latex
},
bloque/.style={
draw,
minimum height=1cm,
minimum width=0.5cm
}
}
\begin{document}
\begin{tikzpicture}[node distance=0.5cm and 1cm] % first value vertical distance, second horizontal
\node
(input)
{Input};
\node[below=of input]
(inputi)
{$x_{1}$};
\node[below=of inputi]
(inputii)
{$x_{2}$};
\coordinate[below=of inputii] (aux);
\node[below=of aux]
(inputiii)
{$x_{3}$};
\node[below=of inputiii]
(inputiv)
{$+1$};
\node[right=of input]
(proje)
{Projection};
\node[circle,
draw,minimum size=1cm,orange,
label={above:\textsc{sum}}]
at (proje|-aux)
(projei)
{};
\node[right=of proje]
(out)
{Output};
\node
at (out|-aux)
(outi)
{$h_{w,b}(x)$};
\foreach \Valor in {i,ii,iii,iv}
{
\draw[arro] (input\Valor) -- (projei);
}
\draw[arro] (projei) -- (outi);
\end{tikzpicture}
\end{document}
решение2
Немного более сложная и лаконичная альтернатива :-) :
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta, calc, chains, positioning}
\begin{document}
\begin{tikzpicture}[
node distance = 4mm and 16mm,
start chain = going below,
arro/.style = {-Latex},
bloque/.style = {text width=4ex, inner sep=1pt, align=right, on chain},
]
% inputs
\foreach \i [count=\j] in {1, 2, 3, +1}
\node[bloque] (in-\j) {$x_{\i}$};
% output
\node (out) [circle, draw=orange, minimum size=6mm,
label=\textsc{sum},
right=of $(in-2)!0.5!(in-3)$] {};
% conections
\foreach \i in {1,...,4}
\draw[arro] (in-\i) -- (out);
% output
\coordinate[right=of out] (output);
\draw[arro] (out) -- (output) node[right] {$h_{w,b}(x)$};
% layer labels
\node[above=of in-1.center] {Input};
\node[above=of in-1 -| out] {Projection};
\node[above=of in-1 -| output] {Ouput};
\end{tikzpicture}
\end{document}