Frage

Dies ist mein erster Beitrag und ich bin ziemlich ein Anfänger auf C ++ und in der Regel zu kompilieren.

Ich bin Kompilieren eines Programms, das einige Grafiken erfordert gezogen werden. Das Programm erstellen .dat-Datei und dann sollte ich gnuplot öffnen und schreiben plot ‚ .dat‘. Das ist in Ordnung.

Gibt es eine Möglichkeit gnuplot automatisch öffnen und zeigen Sie mir die Handlung muss ich machen? Ich soll einig System () Funktion im Code verwenden gnuplot zu nennen, aber wie kann ich ihn machen plotten, was ich brauche?

Sorry für mein nicht-perfekt Englisch: s

Vielen Dank für die Aufmerksamkeit sowieso!

War es hilfreich?

Lösung

auf Ihrem O Je könnten Sie in der Lage sein verwenden popen (). Dies würde Sie einen gnuplot Prozess zu erzeugen und einfach nur um es wie jede andere Datei * schreiben.

Wenn Sie Datenpunkte zu zeichnen haben, können Sie sie inline mit dem Grundstück passieren "-" ... Option. In ähnlicher Weise können Sie erforschen Datensatz Style-Punkte / Linien / linespoints / etc Optionen.


Ohne Pause oder anhalten, gnuplot wird auf End-of-Eingangsstrom beenden. In Ihrem Beispiel Fall, das wäre, wenn das Ende der Datei erreicht ist.


Zur Erzeugung (Schreiben) eine Ausgabedatei (Grafik), zu verwenden:

set terminal png small
set output "filename.png"

Es gibt viele Optionen gesetzt Terminal . Png ist in der Regel dort. Wenn nicht, vielleicht GIF-, TIFF- oder JPEG?

Achten Sie auf das Überschreiben der Datei!

Sie möchten verwenden Set-Größe 2,2 , um eine größere Graphen zu machen. Einige gesetzt Terminal auch Varianten können Sie die Größe angeben.

Andere Tipps

Ich lerne auch dies heute. Hier ist ein kleines Beispiel, das ich gekocht.

#include <iostream>
#include <fstream> 
using namespace std;
int main(int argc, char **argv) {
    ofstream file("data.dat");
    file << "#x y" << endl;
    for(int i=0; i<10; i++){
        file << i << ' ' << i*i << endl;
    }
    file.close();
    return 0;
}
Speichern Sie

, die als plot.cpp und kompilieren, dass mit g ++:

g++ plot.cpp -o plot

Führen Sie das Programm, um die DAT-Datei zu erstellen:

./plot

Speichern Sie den folgenden gnuplot Skript als plot.plt:

set terminal svg enhanced size 1000 1000 fname "Times" fsize 36
set output "plot.svg"
set title "A simple plot of x^2 vs. x"
set xlabel "x"
set ylabel "y"
plot "./data.dat" using 1:2 title ""

Führen Sie das Skript mit gnuplot Ihre SVG-Datei zu generieren:

gnuplot plot.plt

Der resultierende Plot wird in plot.svg sein. Wenn Sie die ersten paar Zeilen auslassen, die die Ausgabe angeben, wird es in einem Fenster machen. Habe Spaß!

Manchmal ist es so einfach, wie man denken kann

    gnuplot file

, wo Datei weder Ihre Daten noch Ihre Ergebnisdatei, sondern eine Datei mit dem Befehl, den Sie in der Kommandozeile eingeben würden. Geben Sie dort Ihre Befehle (entweder konstant Datei, die Sie haben oder erzeugen sie) benötigen. Nach Ausführung aller Befehle in dieser Datei gnuplot beendet wird.

Ja, Sie können. Sie können eine Datei machen, die die Befehle hat man sonst die Handlung einzurichten würde eingeben und offen gnuplot aus dieser Datei ausgeführt wird. Dieser Link hat einen Artikel, der erklärt, wie es zu tun. Sie können auch die Ausgabe zu einem EPS oder anderen grafischen Ausgabeformaten und den Plot angezeigt wird ein anderes Widget verwenden, die in der Datei liest.

Sie müssen den ‚-persist‘ Flag auf den Befehl verwenden. Ich weiß, dass auf * nix-Systemen, dieser Flag ist erforderlich, wenn Sie die Plot-Fenster bleiben wollen, nachdem der gnuplot-Prozess abgeschlossen und beendet.

gnuplot -persist commands.gp

Sie können aber auch so viele gnuplot Befehle setzen, wie Sie in der Datei mögen. Die Datei wirkt wie eine Art Batch-Skript in dieser Hinsicht.

Sie müssen möglicherweise eine Zeile hinzufügen

pause -1

Dies zeigt die Handlung bis zur Rückkehr gedrückt wurde.
Was Sie wahrscheinlich sehen, ist, dass gnuplot läuft und tritt vor dem Grundstück hat die Zeit angezeigt werden.

Unter Umständen müssen Sie einen Terminaltyp einzustellen. Lesen Sie die gnuplot Dokumentation darüber.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top