.csv 파일의 데이터를 TiKZ의 매크로 인수로 사용

.csv 파일의 데이터를 TiKZ의 매크로 인수로 사용

내가 만든 TiKZ 매크로에서 인수로 사용하고 싶은 숫자가 포함된 .csv 파일이 있습니다. 여러 가지 다른 접근 방식을 시도했지만 인수 확장에 문제가 있는 것 같습니다(정말다시 시도하고 싶지 않음 \expandafter), TiKZ 매크로에 대한 인수로 매크로를 사용하지 않고 파일에서 데이터를 호출하는 방법을 알아낼 수 없기 때문입니다.

MWE:

\begin{filecontents*}{data.csv}
10,4.2,green
20,6.4,blue
30,5.4,red
\end{filecontents*}

\documentclass{standalone}
\usepackage{tikz}

\newcommand{\spoke}[3]{%true angle, radius, colour
    \fill[#3] (450-#1-5:0) -- (450-#1-5:#2) -- (450-#1-5:#2) arc (450-#1-5:450-#1+5:#2) -- (450-#1+5:0) -- (450-#1+5:#2) -- cycle;
}

\begin{document}
\begin{tikzpicture}

\spoke{10}{4.2}{green}   %how do I get these from the file?

\end{tikzpicture}
\end{document}

저는 Overleaf를 사용하고 있으므로 패키지/접근 방식이 유연합니다. 입력에 대한 모든 권한도 있으므로 .csv를 사용하는 것보다 더 쉬운 방법이 있다면 그 방법을 대신 사용하겠습니다.

답변1

패키지 csvsimple는 이 작업을 매우 간단하게 수행할 수 있습니다. :) 또한 TikZ 코드 제안을 추가했습니다.슈뢰딩거의 고양이귀하의 질문에 의견을 말하십시오.

\documentclass{standalone}
\begin{filecontents*}{\jobname-data.csv}
angle,radius,colour
10,4.2,green
20,6.4,blue
30,5.4,red
\end{filecontents*}
\usepackage{csvsimple}
\usepackage{tikz}

\newcommand{\spoke}[3]{%true angle, radius, colour
\fill[#3] (450-#1-5:0) -- (450-#1-5:#2) 
    arc[start angle=450-#1-5,end angle=450-#1+5,radius=#2]; 
% modified and more modern code here from Schrödinger'scat in the comments
}

\begin{document}
\begin{tikzpicture}
\csvreader[head to column names]{\jobname-data.csv}{}{
\spoke{\angle}{\radius}{\colour}   %how do I get these from the file?
}
\end{tikzpicture}
\end{document}

코드 출력

관련 정보