使用 DataTool 从 DB 使用 TikZ 绘制路径

使用 DataTool 从 DB 使用 TikZ 绘制路径

我已经编写了这段代码并且它可以工作:

...
\DTLsetseparator{;}
\DTLloaddb[noheader]{DBcurva}{Curvas.csv}
\begin{tikzpicture}
\foreach \columna in {1,3,...,\DTLcolumncount{DBcurva}}{
\edef\listaPuntos{}
    \pgfmathtruncatemacro{\columnasig}{1+\columna} 
    \foreach \fila in {1,2,...,\DTLrowcount{DBcurva}}
    {
      \DTLgetvalue{\cX}{DBcurva}{\fila}{\columna}
      \DTLgetvalue{\cY}{DBcurva}{\fila}{\columnasig}
      \xdef\listaPuntos{(\cX,\cY) -- \listaPuntos}
    }
    \draw \listaPuntos cycle;
  }
\end{tikzpicture}
...

这将读取一个名为“Curvas.csv”的 CSV 文件。列是曲线上点的坐标(X1、Y1、X2、Y2、X3、Y3、X4、Y4..)。代码可以毫无问题地绘制文件中的所有曲线(最初我不知道有多少条曲线)。

有没有更好的方法(我无法将每条曲线分开在不同的文件中)?

答案1

您可以pgfplots循环遍历数据文件中的列并绘制曲线:

\documentclass{minimal}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}

\begin{axis}[every plot/.style={no markers},cycle list name=linestyles]
\pgfplotstableread[col sep=comma] {testdata.csv}\data % Save the CSV to a macro
\pgfplotstablegetcolsof{\data} % Get the number of columns n
\pgfmathparse{\pgfplotsretval-2} % Calculate column index Xn = n-2
\let\xmax\pgfmathresult

\foreach \x in {0,2,...,\xmax} {
    \pgfmathadd{\x}{1} % Offset one to get Y column index
    \let\y\pgfmathresult
    \addplot+[no markers,line width=2pt] table [x index=\x,y index=\y] \data;
}
\end{axis}

\end{tikzpicture}
\end{document}

testdata.csv

X1,Y1,X2,Y2,X3,Y3,X4,Y4
0,0,0,1,0,2,0,3
4,2,5,1,6,6,6,0
8,3,10,4,10,1,10,10

在此处输入图片描述

相关内容