Plotten von Daten aus C

Aus Physik
Wechseln zu: Navigation, Suche

Es gibt mehrere Möglichkeiten Plots aus C-Programmen heraus zu erzeugen:

  1. Speichern der Daten in Files, laden in Matlab und Plots erzeugen
    • Vorteil: gute, alte Matlab-Plots, Plotbefehle sind (mehr oder weniger) bekannt
    • Nachteil: umständlich
    • Nachteil: PostScript von Matlab ist für dreidimensionale Grafiken meist riesig und manchmal nicht ganz korrekt - das kann beim Drucken seltsame Probleme verursachen (Druckjob bricht nach der letzten Seite vor der Grafik ab, obwohl man im GhostView alles sieht) --Ahi 13:33, 11 November 2005 (CET)
  2. In C die Berechnungen und Funktionen, mit denen man die Daten erhält, schreiben.
    Dann aus Matlab heraus die Funktionen aufrufen und die erhaltenen Daten plotten
    • Im Prinzip wie 1. Methode, man spart sich den Zwischenschritt über die Files
    • Wie man C-Funktionen aus Matlab startet, findet man hier
    • Vorteil: Ausgaben können in einem Schritt erstellt werden
    • Nachteil: mann muss zusätzlich die Funktionalität bereit stellen, mit deren Hilfe die Daten ins Matlab kommen
  3. Verwenden des C-Interfaces von Gnuplot ("gnuplot_i")
    • Infos über Gnuplot unter Computer_Benutzung#Visualisierung
      Link zum Projekt (alles Nötige steht dort zum Download)
      Verwendung von gnuplot_i
    • Vorteil: einfach!
    • Nachteil: man muss sich in die Plotfunktionen einlesen (geht aber unheimlich schnell, da es wie die Matlab-Plots funktioniert, außerdem ist gute Doku vorhanden)
    • Nachteil: es sind nicht alle Matlab-Plots verfügbar, aber für die meisten Anwendungen reicht es aus. Es sind auch 3D-Erweiterungen erhältlich!
  4. Verwenden der GNU plotutils (http://www.gnu.org/software/plotutils/): das ist im wesentlich eine Library für C und Fortran, die Plots für X11, PostScript, SVG (Scalable Vector Graphics) und einige weitere Formate erzeugt. Zusätzlich gibt es die Shell-Commands "graph" und "spline", die aus vorhandenen Daten ohne besonderen Aufwand einfache Plots zeichnen können.

Die schnellste und einfachste Möglichkeit ist, sofern man nicht Matlab-Plots haben muss, sicherlich die 3. Variante.

Wünscht man ein komplett objektorientiertes Design, so gibt es auch ein C++-Interface für Gnuplot.



Ich halte für längere Rechnungen immer noch eine Lösung ohne grafische Benutzeroberfläche für am besten geeignet; man läßt dann die Rechnung im Hintergrund oder im Batchsystem Condor laufen und schreibt die Daten in ein File, entweder in einem Text-Format oder mit netCDF bzw. HDF5. Ohne die laufende Simulation zu stören, kann man von anderen Maschinen aus bereits die Daten analysieren (und plotten). --Ahi 13:25, 11 November 2005 (CET)