csv 文件中的单行 3D 曲面/网格图?最好使用 Pgfplots

csv 文件中的单行 3D 曲面/网格图?最好使用 Pgfplots

我做过一系列实验,每个实验都使用了 9 个传感器。这些传感器在物理上以 3x3 的方式排列,我也想像这样以网格或曲面图显示数据。但是,我将数据保存在一个 csv 文件中,其中每行都是一个实验,并显示由此产生的传感器值,如下所示:

Experiment, S0, S1, S2, S3, S4, S5, S6, S7, S8
Test1, 129.0, 82.6, 61.0, 110.6, 113.7, 95.9, 51.9, 98.1, 169.1
Test2, 82.5, 58.5, 51.8, 65.1, 84.1, 80.0, 44.6, 75.5, 88.5

因为我想要绘制很多数据,所以我不想手动重新调整数据或者编写脚本。

我已经尝试使用不同的选项,但无法弄清楚解决问题的正确方法。

这是我对这些数据进行 2D 图计算得出的 MWE:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
Experiment, S0, S1, S2, S3, S4, S5, S6, S7, S8
Test1, 129.0, 82.6, 61.0, 110.6, 113.7, 95.9, 51.9, 98.1, 169.1
Test2, 82.5, 58.5, 51.8, 65.1, 84.1, 80.0, 44.6, 75.5, 88.5
\end{filecontents*}

\begin{document}
\pgfplotstableread[col sep=comma]{data.csv}\rawtable
\pgfplotstabletranspose[colnames from=Experiment]\data{\rawtable}
\begin{tikzpicture}
\begin{axis}[]
\addplot[mark=*,blue] table [x expr=\coordindex, y=Test1, col sep=comma] {\data};
\addplot[mark=*,red] table [x expr=\coordindex, y=Test2, col sep=comma] {\data};
\end{axis}
\end{tikzpicture}

\end{document}

答案1

我自己刚刚找到了解决方案,但我认为它可能很难找到,所以我分享了。我正在使用x expry expr来计算坐标。仍然欢迎其他建议!

这里可以看到 3D 图的 MWE,只需将两条\addplot线更改为几条\addplot3线就足够了。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
Experiment, S0, S1, S2, S3, S4, S5, S6, S7, S8
Test1, 129.0, 82.6, 61.0, 110.6, 113.7, 95.9, 51.9, 98.1, 169.1
Test2, 82.5, 58.5, 51.8, 65.1, 84.1, 80.0, 44.6, 75.5, 88.5
\end{filecontents*}

\begin{document}
\pgfplotstableread[col sep=comma]{data.csv}\rawtable
\pgfplotstabletranspose[colnames from=Experiment]\data{\rawtable}
\begin{tikzpicture}
\begin{axis}[]
\addplot3[mesh,mark=*,blue] table [x expr={int(mod(\coordindex,3))}, y expr={int(\coordindex / 3)}, z=Test1, col sep=comma] {\data};
\addplot3[mesh,mark=*,red] table [x expr={int(mod(\coordindex,3))}, y expr={int(\coordindex / 3)}, z=Test2, col sep=comma] {\data};
\end{axis}
\end{tikzpicture}

\end{document}

相关内容