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

War es hilfreich?

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

Haben Sie sich mit vtk?Wenn Sie Matlab, dann sollten Sie in der Lage sein zu verwenden plot3d oder surf mit meshgrid und griddata zum generieren von 3D-Oberflächen-plots oder patch vorgeschlagen von HerrFooz.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top