web-dev-qa-db-fra.com

Nuages ​​de points en C ++

Quelle est la meilleure façon de représenter graphiquement les nuages ​​de points en C++?

Écrivez-vous des données dans un fichier et utilisez-vous un autre outil? Existe-t-il une bibliothèque comme matplotlib en Python?

23
paxos1977

J'écris toujours des données et j'utilise ensuite gnuplot pour créer mes graphiques. C'est de loin la meilleure façon que j'ai trouvée de produire des graphiques dans une variété de formats: eps, png, jpeg, xpm, nommez-le.

gnuplot fera un nuage de points très facilement. Pourvu que les valeurs x et y soient dans 2 colonnes séparées par des espaces,

plot "data.txt" using 1:2 

Vous donnera un diagramme de dispersion rapide. Ensuite, vous pouvez l'ajuster et ne pas utiliser d'autres commandes gnuplot.

Si vous êtes impliqué dans les sciences, l'apprentissage de gnuplot vous sera très utile. Cela vous évite de faire des tracés Excel à coup sûr et facilite la tâche de faire des tracés à inclure dans les papiers.

31
freespace

Si vous recherchez une bibliothèque C++ plutôt qu'un outil de traçage indépendant comme gnuplot, je considérerais ce qui suit:

dislin semble être le plus intéressant des deux. Voici une description extraite de l'article de wikipedia:

DISLIN est une bibliothèque de traçage de haut niveau et facile à utiliser développée par Helmut Michels à l'Institut Max Planck de Katlenburg-Lindau, en Allemagne. Helmut Michels travaille actuellement en tant que mathématicien et gestionnaire de système Unix au centre informatique de l'institut.

La bibliothèque DISLIN contient des routines et des fonctions pour afficher les données sous forme de courbes, graphiques à barres, camemberts, tracés 3D, surfaces, contours et cartes. Plusieurs formats de sortie sont pris en charge tels que X11, VGA, PostScript, PDF, CGM, HPGL, SVG, PNG, BMP, PPM, GIF et TIFF.

DISLIN est disponible pour les langages de programmation Fortran 77, Fortran 90/95 et C. Tracer des extensions pour les langages Perl, Python et Java sont également pris en charge pour la plupart des La version actuelle de DISLIN est 9.4, sortie en octobre 2008. La première version 1.0 est sortie en décembre 1986.

Le logiciel DISLIN est gratuit pour une utilisation non commerciale.

13
David Segonds

Solution très lourde: vous pouvez créer un lien contre ROOT , ce qui fera à peu près tout ce que vous voulez:

  • fonctionne sur Mac, Windows et Linux
  • exécute compilé ou en utilisant l'interpréteur de cint
  • sortie vers un fichier en postscript encapsulé, PDF, gif, png ...
  • affichage à l'écran à l'aide de plusieurs technologies différentes
  • sérialiser les données dans un format interne pouvant être manipulé ultérieurement

Bien sûr, c'est un peu beaucoup pour la plupart des gens, mais il fait exactement ce que vous avez demandé. Je l'utilise car je le connais et il est déjà sur mes machines car je suis ce genre de physicien.

Bon vieux GNU, ils ont tout ...

http://directory.fsf.org/project/plotutils/

5
paxos1977

Ce n'est certainement pas la meilleure façon, mais j'écris habituellement des fichiers de sortie qui peuvent être lus par R et je les utilise, avec un script approprié, pour tracer les graphiques .

4
Konrad Rudolph

Le problème ici est que C++, contrairement à Java par exemple, n'a pas d'interface graphique ou de graphiques intégrés. Si vous souhaitez générer des graphiques avec C++, vous devrez utiliser une bibliothèque d'interface graphique disponible pour votre Il existe des bibliothèques GUI gratuites, de nombreuses plateformes croisées telles que Qt ou GTK.

Cependant, comme d'autres l'ont souligné, la chose la plus simple à faire serait d'enregistrer les données dans un fichier texte et d'utiliser un autre programme pour générer le graphique. gnuplot est définitivement un bon choix. Il est livré en standard avec la plupart des distributions Linux, et vous obtenez pour Windows sous cygwin.

3
Dima

Cordialement, comploter en C++ pour ceux qui ne l'ont pas encore fait. Je vais dire ce que j'ai fait pour tracer des graphiques en C++

  1. Téléchargez le fichier compressé "gp443win32.Zip" depuis http://sourceforge.jp/projects/sfnet_gnuplot/downloads/gnuplot/4.4.3/gp443win32.Zip/

  2. Extrayez-le dans "C:\Gnuplot" puis je lis "C:\Gnuplot\gnuplot\README.Windows" et j'ai obtenu ces informations:

  3. J'ai utilisé Windows 7 ==> vous devez donc télécharger "winhlp32.exe" ... recherchez-le simplement "winhlp32.exe Windows 7" dans un moteur de recherche et passez par le premier lien.

  4. Ajoutez à la variable d'environnement "Path" le chemin du dossier binaire qui est "C:\Gnuplot\gnuplot\binary"

  5. puis j'arrête mon ordinateur et l'ouvre à nouveau. Après avoir découvert qu'il ne détectait pas le changement dans les variables d'environnement: D

  6. vous devez maintenant écrire un exemple de code pour tester votre capacité de traçage :) afin que vous puissiez visiter ce lien http://code.google.com/p/gnuplot-cpp/source/browse/#svn%2Ftrunk pour voir le fichier d'en-tête "gnuplot_i.hpp" et le fichier source "example.cc".

Vous obtiendrez de nombreux graphiques, choisissez votre graphique approprié, personnalisez votre cœur et profitez :)

2
Islam Yousry

Si vous connaissez matplotlib, vous pouvez incorporer python dans les applications C/C++. Selon ce que vous voulez, cela pourrait être une solution rapide.

1
Alex Coventry

Chart Director a des liaisons pour C++. J'ai utilisé leurs bibliothèques .Net et j'en ai été assez satisfait. C'est une bibliothèque assez bon marché et vous donne le pouvoir de faire toutes sortes de graphiques différents.

0
Kibbee