TikZ - 노드 값에 따른 노드 스타일

TikZ - 노드 값에 따른 노드 스타일

tikzpicture에서는 값에 따라 노드에 다른 스타일을 적용하고 싶습니다. 예를 들어 정수 목록에서 노드 색상을 빨간색이나 파란색으로 지정하고 싶습니다.

이것은 더 큰 프로젝트에 대한 테스트일 뿐이지만 이에 대한 답변은 어쨌든 도움이 될 것입니다.

다음 코드가 작동 중입니다.

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

여기에 이미지 설명을 입력하세요

하지만 제가 할 수 있는 것은 노드의 값에 따라 노드 스타일을 만드는 것입니다. 이렇게 하면 더 많은 사례를 추가하고 \node 줄을 한 번만 사용할 수 있습니다. 이를 달성하기 위해 가장 간단한 방법을 시도했지만 작동하지 않습니다.

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

좋아, 내가 갖고 싶은 것은 일련의 ifthenelse를 tikzstyle로 만드는 것입니다. 이것도 작동하지 않았습니다. \ifthenelse가 모든 TikZ 구조를 준수하지 않는 것 같습니다...

이 문제에 대해 도움을 줄 수 있는 방법을 알고 계시다면 미리 감사드립니다.

답변1

Pgf/Tikz에는 자체적인if-then-elsePgf/Tikz 에는 다른 수학 연산자 중에서 . 섹션을 참조하세요95.2 수학적 표현의 구문: 연산자 설명서의.

두 번째 스니펫에서 제안한 내용은 다음 스크립트를 사용하여 실제로 달성할 수 있습니다.

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

편집하다정수 간격으로 난수가 생성되는 코드는 다음과 같습니다.

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

관련 정보