使用 .csv 檔案中的資料作為 TiKZ 中巨集的參數

使用 .csv 檔案中的資料作為 TiKZ 中巨集的參數

我有一個 .csv 文件,其中包含我想在我創建的 TiKZ 巨集中用作參數的數字。我嘗試了幾種不同的方法,但似乎遇到了擴展參數的問題(真的不想再試\expandafter一次),因為如果不使用巨集作為 TiKZ 巨集的參數,我無法弄清楚如何從檔案呼叫資料。

微量元素:

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

程式碼的輸出

相關內容