来自 csv 的 LaTeX 3D 图

来自 csv 的 LaTeX 3D 图

我有很多这种格式的 csv 文件:

-,x0,x1,x2,x3,x4
y0,z00,z10,z20,z30,z40
y1,z01,z11,z21,z31,z41
y2,z02,z12,z22,z32,z42

我想用 LaTeX 制作 3D 图。不幸的是,我无法读取这种格式的数据。我找到的所有示例都采用以下格式:

x,y,z
x0,y0,z00
x0,y1,z01
x0,y2,z02
x1,y0,z10
x1,y1,z11
x1,y2,z12

这种格式包含冗余信息,在我看来,不适合大型数据集。

我需要这样的东西:

 \begin{filecontents*}{data.csv}
    Value,0,1,2,3,4,5
    0,4,5,6,7,8,9
    1,3,4,5,6,7,8
    2,2,3,4,5,6,7
    3,1,2,3,4,5,6
    4,0,1,2,3,4,5
\end{filecontents*}

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{csvsimple}

\begin{document}
\begin{tikzpicture}
    \begin{axis}
        
\addplot3[line width=1pt,solid,color=blue] %
table[x=row[0][1:],y=col[0][1:],z=[x+1,y+2],col sep=semicolon]{data.csv};
        
    \end{axis}
\end{tikzpicture}
\end{document}

答案1

必须安装 Gnuplot,并且必须使用 shell escape 进行编译。

\begin{filecontents*}{data.csv}
    Value,0,1,2,3,5,6
    0,4,6,6,5,8,9
    1,3,4,5,6,7,8
    2,2,3,8,5,6,7
    3,1,2,3,4,3,6
    5,0,1,4,3,4,5
\end{filecontents*}

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={10}{40}]
\addplot3[surf] gnuplot[raw gnuplot] {set datafile separator comma; splot "data.csv" nonuniform matrix};
\end{axis}
\end{tikzpicture}
\end{document}

3D 曲面图

编辑:这里再次绘制了相同的图,但 x 值有一个改变,以强调不均匀性:

\begin{filecontents*}[overwrite]{data.csv}
Value,0,1,2,3,5,60
0,4,6,6,5,8,9
1,3,4,5,6,7,8
2,2,3,8,5,6,7
3,1,2,3,4,3,6
5,0,1,4,3,4,5
\end{filecontents*}

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={10}{40}]
\addplot3[surf] gnuplot[raw gnuplot] {set datafile separator comma; splot "data.csv" nonuniform matrix};
\end{axis}
\end{tikzpicture}
\end{document}

非均匀矩阵曲面图

情节matrix columnheaders rowheader会出错(没有OP给出的数据格式)。

均匀矩阵曲面图

相关内容