Use dados no arquivo .csv como argumentos para macro no TiKZ

Use dados no arquivo .csv como argumentos para macro no TiKZ

Tenho um arquivo .csv com números que gostaria de usar como argumentos em uma macro TiKZ que criei. Eu tentei várias abordagens diferentes, mas parece que estou tendo problemas com a expansão de argumentos (realmentenão quero tentar \expandafternovamente), pois não consigo descobrir como chamar os dados do arquivo sem usar uma macro como argumento para minha macro 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}

Estou usando o Overleaf, por isso sou flexível em relação a pacotes/abordagens. Também tenho controle total sobre a entrada, então, se houver uma maneira mais fácil do que usar um .csv, ficaria muito feliz em usá-la.

Responder1

O csvsimplepacote pode fazer isso de forma bastante simples. :) Também adicionei a sugestão de código TikZ feita emGato de Schrödingercomente sua pergunta.

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

saída de código

informação relacionada