plot a 3-Achse als eine Masche
Frage
Ich habe gesehen, 3d-Oberflächen-plots der Daten vor aber ich weiß nicht, welche software ich verwenden könnte, um es zu machen.
Ich habe 3 Datenreihen (X, Y, Z) grundsätzlich möchte ich jede der Zeilen der Tabelle zu einem Punkt im 3d-Raum, die sich alle gemeinsam als eine Masche.Die Daten sind derzeit csv, aber ändern kann ich das format, wie es ist, Daten generiert ich mich.
Kann jemand helfen
Lösung
Wenn x & y Punkte topologisch auf einem Raster liegen, dann können Sie MESH verwenden. Sie brauchen nicht einmal Abstand zu haben; sie müssen nur organisiert werden, so daß x (r: r + 1, c: c + 1) und y (R: r + 1, c: c + 1) ein Viereck auf der Masche definieren, für jede Reihe r und Spalte c.
Wenn Sie Ihre Daten auf einem Raster liegen nicht, aber Sie wissen, was die Gesichter sein sollte, sehen Sie die Patch-Funktion.
Wenn Sie nur Punkte haben und Sie wissen nichts über die Oberfläche, müssen Sie zuerst die Oberflächenrekonstruktion Problem. Ich habe gebrauchten cocone; es gibt auch andere es auch gute Pakete. Sobald Sie die rekonstruierte Oberfläche haben, dann können Sie PATCH verwenden, um sie anzuzeigen.
Andere Tipps
gnuplot oder scilab
Im Folgenden finden Sie ein Skript für SciLab, dass ich eine Weile zurück schrieb. Er liest in drei Spalten durch Tabulatoren getrennt. Sie können dies leicht Ihre Bedürfnisse, ziemlich selbsterklärend ändern passen. Hier ist eine kurze Anleitung zur Lesen / Schreiben in scilab und einer ich Referenz unter hier :
function plot_from_file(datafile)
//
// Make a simple x-y-z plot based on values read from a datafile.
// We assume that the datafile has three columns of floating-point
// values seperated by tabs.
// set verbose = 1 to see lots of diagnostics
verbose = 1;
// open the datafile (quit if we can't)
fid = mopen(datafile, 'r');
if (fid == -1)
error('cannot open datafile');
end
// loop over all lines in the file, reading them one at a time
num_lines = 0;
while (true)
// try to read the line ...
[num_read, val(1), val(2), val(3)] = mfscanf(fid, "%f\t%f\t%f");
if (num_read <= 0)
break
end
if (verbose > 0)
fprintf(1, 'num_lines %3d num_read %4d \n', num_lines, num_read);
end
if (num_read ~= 3)
error('didn''t read three points');
end
// okay, that line contained valid data. Store in arrays
num_lines = num_lines + 1;
x_array(num_lines) = val(1);
y_array(num_lines) = val(2);
z_array(num_lines) = val(3);
end
// now, make the plot
plot3d2(x_array, y_array, z_array);
// close the datafile
mclose(fid);
endfunction