Gnuplot + Linux



  • Hallo zusammen!

    Ich arbeite mit Linux und möchte Gnuplot in ein c++ Projekt einbauen. kennt jemand eine gut dokumentierte implementiereung?

    danke im voraus



  • Was genau meinst du mit "in ein Projekt einbauen"?

    Da GNUPlot über Kommandozeile gesteuert wird (Zeichenketten über stdin), lässt es sich sehr bequem von anderen Programmen aus bedienen. Siehe auch hier unter dem Abschnitt "Grafische Ausgabe".



  • ich möchte gerne, messwerte(ein array) mit gnuplot zeichnen lassen, und die grafik(jpeg,png) anschließen in meinem programm anzeigen lassen.

    Der Benutzer sollte nach betätigung eines Buttons das von gnuplot gezeichnete diagramm in einem eigenen fenster betrachten können.



  • pfu schrieb:

    ich möchte gerne, messwerte(ein array) mit gnuplot zeichnen lassen ...

    Genau das macht mein Programm XDAMS, das in o. g. Link beschrieben ist.

    Mit GNUPlot ist das kein Problem. Du startest GNUPlot mit popen() (s. o.) und schreibst dann deine Plot-Anweisung in den mit popen() geöffneten Stream.
    Wenn du zuvor die Ausgabe mit den Kommandos "set term pbm color" und "set output 'diagramm.pbm'" in eine PBM-Datei lenkst und nach der "plot"-Anweisung die Ausgabe mit "set output" schließt, erhälts du eine PBM- bzw. PPM-Grafik von deinen Messwerten.



  • zu meiner schande. ich habe noch nie mit streams gearbeitet.

    wie gehörte der stream in diesem fall definiert?

    danke im voraus



  • pfu schrieb:

    zu meiner schande. ich habe noch nie mit streams gearbeitet.

    Dann wird's aber Zeit! 😉

    Im Ernst, wenn du Messwerte abspeichern willst - und das musst du für die Ausgabe mit GNUPlot tun - dann wirst du wohl um streams nicht herumkommen. (Ach ja, du programmierst ja in C++ und arbeitest wahrscheinlich mit "cout".)

    Sieh dir doch mal man fopen an!

    Hier ist ein kurzes ANSI-C-Programm, das mit GNUPlot eine PBM-Datei erzeugt (ist vielleicht auch für andere interessant.):

    # include <stdio.h>
    
    int main()
     {
      FILE *stream;
    
      stream = fopen("messwerte.dat", "w");
      fprintf(stream, "1 0\n2 1\n3 3\n4 6\n5 8\n6 9\n7 8\n8 6\n9 3");
      fclose(stream);
    
      stream=popen("gnuplot", "w");
      fprintf(stream, "set terminal pbm color\nset output 'diagramm.ppm'\n");
      fprintf(stream, "set grid\nset title 'Messwerte'\n");
      fprintf(stream, "plot 'messwerte.dat' w linespoints 1 4\n");
      fprintf(stream, "set output\n");
      fclose(stream);
    
      return(0);
     }
    
    > gcc -Wall -o plot plot.c
    > plot
    

    Dann erhälst du eine Datei "diagramm.ppm" mit den fiktiven Messwerten als Grafik.
    (Für ein ordentliches Programm müsstest du allerdings noch mögliche Fehler bei fopen() oder popen() abfangen und vorher prüfen, ob GNUPlot überhaupt vorhanden ist.)


Anmelden zum Antworten