Domanda

Questo è il mio primo post e sono abbastanza alle prime armi con il C ++ e la compilazione in generale.

Sto compilando un programma che richiede di disegnare alcuni grafici. Il programma crea un file .dat e quindi dovrei aprire gnuplot e scrivere la trama ' .dat'. Va bene.

C'è un modo per aprire automaticamente gnuplot e mostrarmi la trama di cui ho bisogno? Dovrei usare alcune funzioni di sistema () nel codice per chiamare gnuplot ma come posso fargli tracciare ciò di cui ho bisogno?

Ci scusiamo per il mio inglese non perfetto: s

Grazie per l'attenzione comunque!

È stato utile?

Soluzione

A seconda del sistema operativo in uso, potresti essere in grado di utilizzare popen (). Ciò ti consentirebbe di generare un processo gnuplot e di scriverlo come qualsiasi altro FILE *.

Se hai punti dati da tracciare, puoi passarli in linea con la trama " - " ... . Allo stesso modo, potresti voler esplorare impostare le opzioni di punti / linee / punti di linea di dati / etc .


Senza pausa o persistere, gnuplot terminerà alla fine del flusso di input. Nel tuo esempio, ciò avverrebbe quando viene raggiunta la fine del file.


Per produrre (scrivere) un file di output (grafico), utilizzare:

set terminal png small
set output "filename.png"

Ci sono molte opzioni per impostare il terminale . Png è di solito lì. In caso contrario, forse gif, tiff o jpeg?

Attenzione per sovrascrivere il file!

Puoi usare imposta la dimensione 2,2 per creare un grafico più grande. Alcune varianti di imposta terminale consentono anche di specificare la dimensione.

Altri suggerimenti

Lo sto imparando anche oggi. Ecco un piccolo esempio che ho preparato.

#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;
}

Salvalo come plot.cpp e compilarlo con g ++:

g++ plot.cpp -o plot

Esegui il programma per creare il file .dat:

./plot

Salva il seguente script gnuplot come 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 ""

Esegui lo script con gnuplot per generare il tuo file .svg:

gnuplot plot.plt

Il grafico risultante sarà in plot.svg. Se si tralasciano le prime due righe che specificano l'output, verrà visualizzato in una finestra. Divertiti!

A volte è facile come si potrebbe pensare

    gnuplot file

dove file non è né i tuoi dati né il tuo file dei risultati, ma un file con il comando che dovresti digitare nella riga di comando. Basta inserire lì i comandi che ti servono (o file costante che hai o generarlo). Dopo aver eseguito tutti i comandi in quel file gnuplot esce.

Sì, puoi. Puoi creare un file con i comandi che altrimenti digiteresti per impostare la trama e aprire gnuplot in esecuzione da quel file. Questo link ha un articolo che spiega come farlo. Puoi anche eseguire l'output in un formato EPS o altri formati di output grafici e visualizzare il grafico utilizzando un altro widget che legge nel file.

Potrebbe essere necessario utilizzare il flag '-persist' per il comando. So che su sistemi * nix, questo flag è necessario se si desidera che la finestra della trama rimanga dopo che il processo gnuplot è stato completato ed è terminato.

gnuplot -persist command.gp

Inoltre, puoi inserire tutti i comandi gnuplot che desideri nel file. Il file si comporta in qualche modo come uno script batch in questo senso.

Potrebbe essere necessario aggiungere una riga

pause -1

Questo mostrerà la trama fino a quando non è stato premuto return.
Quello che probabilmente stai vedendo è che gnuplot viene eseguito ed esce prima che la trama abbia il tempo di essere visualizzata.

Potrebbe essere necessario impostare un tipo di terminale. Leggi la documentazione di gnuplot al riguardo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top