Question

Ceci est mon premier article et je suis assez novice en C ++ et en compilation en général.

Je suis en train de compiler un programme qui nécessite de dessiner des graphiques. Le programme crée un fichier .dat, puis je dois ouvrir gnuplot et écrire le tracé ' .dat'. C'est bien.

Existe-t-il un moyen de faire en sorte que gnuplot s'ouvre automatiquement et de me montrer l'intrigue dont j'ai besoin? Je devrais utiliser une fonction system () dans le code pour appeler gnuplot, mais comment puis-je lui faire tracer ce dont j'ai besoin?

Désolé pour mon anglais imparfait: s

Merci de votre attention quand même!

Était-ce utile?

La solution

En fonction de votre système d'exploitation, vous pouvez éventuellement utiliser popen (). Cela vous permettrait de lancer un processus gnuplot et d’écrire dessus comme n’importe quel autre FICHIER *.

Si vous avez des points de données à tracer, vous pouvez les transmettre en ligne avec le tracé "" -" " ... option . De même, vous pouvez explorer les options de définition de points de style de données / lignes / points de lignes / etc .

Sans pause ni persistante, gnuplot se terminera à la fin du flux d'entrée. Dans votre cas, par exemple, ce serait lorsque la fin du fichier est atteinte.

Pour produire (écrire) un fichier de sortie (graphique), utilisez:

set terminal png small
set output "filename.png"

Il existe de nombreuses options pour configurer un terminal . Png est généralement là. Si non, peut-être gif, tiff ou jpeg?

Attention au remplacement du fichier!

Vous pouvez utiliser la taille définie 2,2 pour créer un graphique plus grand. Certaines variantes de set terminal vous permettent également de spécifier la taille.

Autres conseils

J'apprends cela aujourd'hui aussi. Voici un petit exemple que j'ai concocté.

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

Enregistrez-le sous le nom plot.cpp et compilez-le avec g ++:

g++ plot.cpp -o plot

Exécutez le programme pour créer le fichier .dat:

./plot

Enregistrez le script gnuplot suivant sous le nom 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 ""

Exécutez le script avec gnuplot pour générer votre fichier .svg:

gnuplot plot.plt

Le tracé résultant sera dans plot.svg. Si vous laissez de côté les deux premières lignes spécifiant la sortie, le rendu s’effectuera dans une fenêtre. S'amuser!

Parfois, c'est aussi simple qu'on pourrait le penser

    gnuplot file

où le fichier n'est ni vos données ni votre fichier de résultat, mais un fichier avec la commande que vous voudriez taper dans la ligne de commande. Entrez simplement les commandes dont vous avez besoin (que ce soit un fichier constant ou le générer). Après avoir exécuté toutes les commandes de ce fichier, gnuplot se ferme.

Oui, vous le pouvez. Vous pouvez créer un fichier contenant les commandes que vous auriez sinon saisies pour configurer le tracé et ouvrir gnuplot à partir de ce fichier. Ce lien contient un article expliquant comment procéder. Vous pouvez également générer une sortie au format EPS ou à un autre format de sortie graphique et afficher le tracé à l'aide d'un autre widget lu dans le fichier.

Vous devrez peut-être utiliser l'indicateur '-persist' pour la commande. Je sais que sur les systèmes * nix, cet indicateur est requis si vous souhaitez que la fenêtre de traçage reste après la fin du processus gnuplot.

gnuplot -persist commands.gp

De plus, vous pouvez placer autant de commandes gnuplot que vous le souhaitez dans le fichier. Le fichier agit un peu comme un script batch à cet égard.

Vous devrez peut-être ajouter une ligne

pause -1

Ceci affichera l’intrigue jusqu’à ce que vous ayez appuyé sur Retour.
Ce que vous voyez probablement, c’est que gnuplot s’exécute avant que le tracé ait le temps d’être affiché.

Vous devrez peut-être définir un type de terminal. Lisez la documentation de gnuplot à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top