Gráfico de superfície 3D a partir de dados csv

Gráfico de superfície 3D a partir de dados csv

Estou tentando traçar dados de velocidade de uma sonda medida em um canal.

O objetivo é uma superfície estendida sobre os pontos medidos e colorida de acordo com o valor da velocidade (v) e vista de cima (como um "mapa de cores"?). Incluindo sombreamento entre esses pontos. O melhor resultado, depois de um dia de tentativas que consegui, está listado abaixo. O sombreamento entre os pontos ainda está faltando.

Ao substituir os parâmetros por addplot3isso surffica pior.

\documentclass{article}
\usepackage{pgfplots, filecontents}


\begin{filecontents*}{04_v_plot.csv}
depth,column,v
0.05,0.025,3.797153190429337
0.1,0.025,3.726861900740809
0.15,0.025,3.5359111045962095
0.2,0.025,3.4128410835129053
0.25,0.025,3.140235925631795
0.05,0.1,4.243357377017983
0.1,0.1,4.1459069835908196
0.15,0.1,3.9166226281025893
0.2,0.1,4.106142900384007
0.25,0.1,3.4708819672783275
0.05,0.175,4.132121899523459
0.1,0.175,3.768785853709482
0.15,0.175,3.345251163711442
0.2,0.175,3.2543256435843415
0.25,0.175,2.7823975289356344
\end{filecontents*}

\begin{document}

\begin{figure}
  \centering
  \begin{tikzpicture}
    \begin{axis}[
      xlabel={Horizontal position},
      ylabel={Depth},
      colorbar,
      y dir=reverse,
      ymin=0,
      ymax=0.3,
      xmin=0,
      xmax=0.2,
      view={0}{90},
      ]

      \addplot3+[scatter, only marks] table[x=column,y=depth,z=v,col sep=comma]{04_v_plot.csv};
    \end{axis}
  \end{tikzpicture}
  \caption{Velocities at positions}%
\end{figure}

\end{document}

Reorganizei os dados do csv original:

depth,A,B,C
0.05,3.797153190429337,4.243357377017983,4.132121899523459
0.1,3.726861900740809,4.1459069835908196,3.768785853709482
0.15,3.5359111045962095,3.9166226281025893,3.345251163711442
0.2,3.4128410835129053,4.106142900384007,3.2543256435843415
0.25,3.140235925631795,3.4708819672783275,2.7823975289356344

Seria possível ler o arquivo csv original e plotar os dados?

Responder1

Asymptotesolução:

// csv-colormap.asy
//
// run  
//    asy csv-colormap.asy
//
// to get a standalone image in csv-colormap.pdf
//
settings.tex="pdflatex";
size(12cm,12cm);
import graph;
import palette;
import colorbrewer;
import fontsize;defaultpen(fontsize(8pt));
texpreamble("\usepackage{lmodern}"+"\usepackage{amsmath}"
            +"\usepackage{amsfonts}"+"\usepackage{amssymb}");
file fin=input("04_v_plot.csv").csv();
string[] s=fin.line(); // skip the title line
real[][] A=fin;
A=transpose(A);
real[] x=A[0];
real[] y=A[1];
real[] z=A[2];

pen[] Palette=Blues9;

picture bar;
bounds range=image(x,y,z,Palette);

palette(bar,rotate(90)*"Velocity",range,(0,0),(0.5cm,5.3cm)
          ,Right,Palette,PaletteTicks("$%+#.1f$"));
add(bar.fit(),point(E),30E);

xaxis("Horizontal position",BottomTop,LeftTicks(Step=0.05,step=0.01),above=true);
yaxis("Depth",LeftRight,RightTicks(Step=0.05,step=0.01),above=true);

insira a descrição da imagem aqui

Observe que este código usa uma paleta Blues9de colorbrewer.asy, que fornece Esquemas de cores da Prof. Cynthia Brewer como matrizes de canetas para assíntota. Claro, pode ser substituído por qualquer outra paleta adequada.

informação relacionada