
Em uma imagem tikz, gostaria de aplicar estilos diferentes aos nós, dependendo de seus valores. Por exemplo, em uma lista de números inteiros, gostaria de colorir o nó em vermelho ou azul.
Este é apenas um teste para um projeto maior, mas uma resposta deve ajudar de qualquer maneira.
O seguinte código está funcionando:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{ifthen}
\begin{document}
\begin{tikzpicture}
\pgfmathdeclarerandomlist{nums}{{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}}
\foreach \x in {1,...,10}
{
\pgfmathrandomitem{\choice}{nums}
\ifthenelse{\choice<5}
{
\node[circle, fill=blue!50] at (\x,0) {\choice};
}
{
\node[circle,fill=red!50] at (\x,0) {\choice};
}
}
\end{tikzpicture}
\end{document}
Mas o que eu gostaria de poder fazer é criar um estilo de nó, dependendo do valor do nó. Dessa forma, eu poderia adicionar mais casos e usar a linha \node apenas uma vez. Tentei a maneira mais simples de conseguir isso, mas não funcionou:
\begin{tikzpicture}
\pgfmathdeclarerandomlist{nums}{{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}}
\foreach \x in {1,...,10}
{
\pgfmathrandomitem{\choice}{nums}
\def\clr{\ifthenelse{\choice<5}{blue!50}{red!50}}
\node[circle, fill=\clr] at (\x,0) {\choice};
}
\end{tikzpicture}
Resumindo, o que eu gostaria de ter é uma série de ifthenelse em um estilo tikz. Isso também não funcionou. Parece que \ifthenelse não está em conformidade com todas as estruturas do TikZ...
Agradecemos antecipadamente se você souber uma maneira de me ajudar com isso.
Responder1
Pgf/Tikz possui construções próprias if-then-else
, entre outros operadores matemáticos. Veja a seção95.2 Sintaxe para Expressões Matemáticas: Operadores do manual.
O que você propôs em seu segundo trecho pode ser alcançado com o script a seguir.
\documentclass{article}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{ifthen}
\tikzset{
conditionalcolor/.style={circle,fill=#1}
}
\begin{document}
\begin{tikzpicture}
\pgfmathdeclarerandomlist{nums}{{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}}
\foreach \x in {1,...,10}{
\pgfmathrandomitem{\choice}{nums}
\pgfmathsetmacro{\col}{ifthenelse(\choice<5,"blue!50","red!50")}
\node[conditionalcolor=\col] at (\x,0) {\choice};
}
\end{tikzpicture}
\end{document}
EDITARAqui está um código onde o número aleatório é gerado em um intervalo de inteiros.
\documentclass{article}
\usepackage{tikz}
\tikzset{
conditionalcolor/.style={circle,fill=#1}
}
\begin{document}
\begin{tikzpicture}
\foreach \x in {1,...,10}{
\pgfmathtruncatemacro{\choice}{random(0,9)}
\pgfmathsetmacro{\col}{ifthenelse(\choice<5,"blue!50","red!50")}
\node[conditionalcolor=\col] at (\x,0) {\choice};
}
\end{tikzpicture}
\end{document}