
Ich versuche, Geschwindigkeitsdaten von einer Sonde darzustellen, die über einen Kanal gemessen wurden.
Das Ziel ist eine Oberfläche, die über die gemessenen Punkte gespannt und entsprechend dem Geschwindigkeitswert (v) eingefärbt und von oben betrachtet wird (wie eine „Colormap“?). Einschließlich Schattierungen zwischen diesen Punkten. Das beste Ergebnis, das ich nach einem Tag des Probierens erzielen konnte, ist unten aufgeführt. Die Schattierungen zwischen den Punkten fehlen noch.
Beim Ersetzen der Parameter durch addplot3
wird surf
es schlimmer.
\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}
Ich habe die Daten aus der ursprünglichen CSV-Datei neu angeordnet:
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
Wäre es möglich, die ursprüngliche CSV-Datei zu lesen und die Daten darzustellen?
Antwort1
Asymptote
Lösung:
// 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);
Beachten Sie, dass dieser Code eine Palette Blues9
aus verwendetcolorbrewer.asy, der bereitstellt
Farbschemata von Prof. Cynthia Brewer
als Stiftarrays für Asymptoten. Natürlich kann es durch jede andere geeignete Palette ersetzt werden.