
Estou tentando descobrir como substituir os pontos nos círculos por valores numéricos (1, 2, 3, etc)
Por favor, ajude-me a identificar quais linhas de código preciso editar para realizar essa substituição.
Desde já, obrigado!
mwe (h/t pecusse)
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,fit}
\begin{document}
\begin{tikzpicture}
%put some nodes on the left
\foreach \x in {1,2,3}{
\node[fill,circle,inner sep=2pt] (d\x) at (0,\x) {};
}
\node[fit=(d1) (d2) (d3),ellipse,draw,minimum width=1cm] {};
%put some nodes on the center
\foreach \x[count=\xi] in {0.5,1.5,...,4}{
\node[fill,circle,inner sep=2pt] (r\xi) at (2,\x) {};
}
\node[fit=(r1) (r2) (r3) (r4),ellipse,draw,minimum width=1.5cm] {};
%put some nodes on the right
\foreach \x[count=\xi] in {0.75,1.5,...,3}{
\node[fill,circle,inner sep=2pt] (c\xi) at (4,\x) {};
}
\node[fit=(c1) (c2) (c3) (c4) ,ellipse,draw,minimum width=1.5cm] {};
\draw[-latex] (d1) -- (r2);
\draw[-latex] (d2) -- (r2);
\draw[-latex] (d3) -- (r4);
\draw[-latex] (r1) -- (c2);
\draw[-latex] (r2) -- (c3);
\draw[-latex] (d3) -- (r4);
\end{tikzpicture}
\end{document}
Responder1
Não sei quais números você gostaria de colocar onde, mas em geral, o conteúdo de um nó deve ser colocado entre chaves: \node[options] (name) at (0,0) {
... };
.
No seu exemplo, você pode querer colocar nos nós os números do \foreach
loop que estão armazenados na macro \x
. Como os nós são preenchidos em preto, o texto interno não seria visível. Portanto, sugiro que você altere a cor de preenchimento usando, por exemplo, fill=lightgray
. Então, você pode escrever algo como: \node[fill=lightgray,circle,inner sep=2pt] (d\x) at (0,\x) {\x};
.
Se você fizer isso para todos os três conjuntos de nós, descobrirá que o conteúdo dos nós tem comprimentos diferentes e, portanto, os círculos terão tamanhos diferentes. Por exemplo, alguns nós contêm apenas um dígito, enquanto outros contêm três e um ponto como separador decimal. Você provavelmente deseja adicionar a opção minimum width=2.5em
(ou similar) aos nós para obter o mesmo tamanho para todos os nós.
Finalmente, como os nós podem se sobrepor devido ao aumento do tamanho, você pode definir a opção y=1.25cm
para o todo tikzpicture
, aumentando as distâncias verticais enquanto mantém as distâncias horizontais como estão.
Somando tudo, você obteria:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,fit}
\begin{document}
\begin{tikzpicture}[y=1.25cm]
%put some nodes on the left
\foreach \x in {1,2,3}{
\node[fill=lightgray,circle,inner sep=2pt,minimum width=2.5em] (d\x) at (0,\x) {\x};
}
\node[fit=(d1) (d2) (d3),ellipse,draw,minimum width=1cm] {};
%put some nodes on the center
\foreach \x[count=\xi] in {0.5,1.5,...,3.5}{
\node[fill=lightgray,circle,inner sep=2pt,minimum width=2.5em] (r\xi) at (2,\x) {\x};
}
\node[fit=(r1) (r2) (r3) (r4),ellipse,draw,minimum width=1.5cm] {};
%put some nodes on the right
\foreach \x[count=\xi] in {0.75,1.5,...,3}{
\node[fill=lightgray,circle,inner sep=2pt,minimum width=2.5em] (c\xi) at (4,\x) {\x};
}
\node[fit=(c1) (c2) (c3) (c4),ellipse,draw,minimum width=1.5cm] {};
\draw[-latex] (d1) -- (r2);
\draw[-latex] (d2) -- (r2);
\draw[-latex] (d3) -- (r4);
\draw[-latex] (r1) -- (c2);
\draw[-latex] (r2) -- (c3);
\draw[-latex] (d3) -- (r4);
\end{tikzpicture}
\end{document}
Se você não quiser nenhum plano de fundo por trás dos números, provavelmente poderá excluir completamente as opções dos nós (além disso, você não precisaria definir y=1.25cm
). Você pode querer adicionar um pouco de cor (semelhante à imagem fornecida em seu comentário), por isso adicionei um pouco de cor ao oval esquerdo e a uma das setas:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,fit}
\begin{document}
\begin{tikzpicture}
%put some nodes on the left
\foreach \x in {1,2,3}{
\node (d\x) at (0,\x) {\x};
}
\node[fit=(d1) (d2) (d3),ellipse,draw=blue,minimum width=1cm] {};
%put some nodes on the center
\foreach \x[count=\xi] in {0.5,1.5,...,3.5}{
\node (r\xi) at (2,\x) {\x};
}
\node[fit=(r1) (r2) (r3) (r4),ellipse,draw,minimum width=1.5cm] {};
%put some nodes on the right
\foreach \x[count=\xi] in {0.75,1.5,...,3}{
\node (c\xi) at (4,\x) {\x};
}
\node[fit=(c1) (c2) (c3) (c4),ellipse,draw,minimum width=1.5cm] {};
\draw[-latex,orange] (d1) -- (r2);
\draw[-latex] (d2) -- (r2);
\draw[-latex] (d3) -- (r4);
\draw[-latex] (r1) -- (c2);
\draw[-latex] (r2) -- (c3);
\draw[-latex] (d3) -- (r4);
\end{tikzpicture}
\end{document}