
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-else
Pgf/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}