TikZ: estilo de nodo según el valor del nodo

TikZ: estilo de nodo según el valor del nodo

En una imagen tikz, me gustaría aplicar diferentes estilos a los nodos según sus valores. Por ejemplo, en una lista de números enteros, me gustaría colorear el nodo en rojo o azul.

Esta es solo una prueba para un proyecto más grande, pero una respuesta debería ayudar de todos modos.

El siguiente 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}

ingrese la descripción de la imagen aquí

Pero lo que me gustaría poder hacer es crear un estilo de nodo, dependiendo del valor del nodo. De esta manera, podría agregar más casos y solo usar la línea \node una vez. Intenté la forma más sencilla de lograrlo, pero no funciona:

\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}

En fin, lo que me gustaría tener es una serie de ifthenelse en un estilo tikz. Esto tampoco funcionó. Parece que \ifthenelse no cumple con todas las estructuras de TikZ...

Gracias de antemano si sabes alguna manera de ayudarme con esto.

Respuesta1

Pgf/Tikz tiene el suyoif-then-else construcciones, entre otros operadores matemáticos. Mira la sección95.2 Sintaxis de expresiones matemáticas: operadores del manual.

Lo que propuso en su segundo fragmento se puede lograr con el siguiente script.

\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}

EDITARAquí hay un código donde el número aleatorio se genera en un intervalo de números enteros.

\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}

información relacionada