Jolis graphiques et graphiques en Python [fermé]

130

Quelles sont les bibliothèques disponibles pour créer de jolis tableaux et graphiques dans une application Python?

sverrejoh
la source
22
Je ne sais pas pourquoi celui-ci a été fermé. Il n'invite pas les guerres de flammes ou les opinions, et a un ensemble de réponses claires: il n'y a qu'une poignée de bibliothèques de traçage Python.
Alex B
7
Pourquoi est-ce fermé? C'est une question utile. Quoi qu'il en soit, ma recommandation est de pip search plotregarder ce qui se passe. J'ai découvert pygal en faisant cela, et pygal a fière allure.
Mark E. Haase
Il convient également de noter que cette question vient en tête d'une recherche Google pour "charting python" - raison suffisante pour l'ouvrir à nouveau.
George Lund
Cette question est utile, elle ne doit pas être fermée. Les autres options incluent bokeh et PyX
atomh33ls

Réponses:

50

Je suis celui qui soutient CairoPlot et je suis très fier qu'il soit venu ici. Matplotlib est sûrement génial, mais je pense que CairoPlot est plus beau. Donc, pour les présentations et les sites Web, c'est un très bon choix.

Aujourd'hui, j'ai publié la version 1.1. Si vous êtes intéressé, vérifiez-le sur CairoPlot v1.1

EDIT: Après un hiver long et froid, CairoPlot est à nouveau développé. Découvrez la nouvelle version sur GitHub .

Rodrigo
la source
2
Ça a l'air bien, j'aimerais l'essayer. Avez-vous l'intention de créer un programme d'installation Windows pour python 2.6?
monkut
Pas de problème pour le support, j'en suis d'accord. Merci pour le compliment: D
Rodrigo
Je viens d'ajouter stackoverflow.com/questions/359727#520049 pour que vous puissiez voter contre, si vous le souhaitez.
VonC le
1
Cairoplot ne fonctionne vraiment pas très bien pour de grandes quantités de données (corrigez-moi si je me trompe). Vous ne pouvez pas ajouter d'étiquettes à l'axe pour résumer les hlabels ou vlabels. Je ne peux pas voir de toute façon tracer plusieurs lignes sur un graphique ou avoir un contrôle sur les couleurs utilisées. Je pourrais pirater le script ... passer à matplotlib ...
Jon
Tout le monde devrait ignorer le commentaire de Jon, il est très facile d'étiqueter l'axe et de définir les couleurs utilisées ... Consultez tests.py pour des exemples. Quoi qu'il en soit, merci pour une belle bibliothèque.
Daniel Magnusson
38

Pour le travail interactif, Matplotlib est la norme mature. Il fournit une API de style OO ainsi qu'une API interactive de style Matlab.

Chaco est une bibliothèque de tracés plus moderne des gens d'Enthought. Il utilise la bibliothèque de dessins vectoriels Kiva d'Enthought et ne fonctionne actuellement qu'avec Wx et Qt avec OpenGL (Matplotlib a des backends pour Tk, Qt, Wx, Cocoa et de nombreux types d'images tels que PDF, EPS, PNG, etc.). Les principaux avantages de Chaco sont sa rapidité par rapport à Matplotlib et son intégration avec l'API Traits d'Enthought pour les applications interactives.

Barry Wark
la source
2
Je suis d'accord que de toutes les API - matplotlib semble être en effet la plus mature et la plus riche en fonctionnalités (et est également toujours prise en charge et en cours de développement). Allez simplement dans sa "galerie" pour voir divers exemples (avec le code source correspondant): matplotlib.sourceforge.net/gallery.html . Cependant, je dirais que son API est, eh bien ..., compliquée - les noms de méthodes me rendent fou :) En parlant d'exemples "compliqués" et simples - ce billet de blog m'a beaucoup aidé à démarrer avec matplotlib: shreevatsa.wordpress .com / 2010/03/07 / matplotlib-tutorial
Timur
Désolé, je dois également ajouter que matplotlib n'est pas seulement interactif - vous pouvez en fait enregistrer un graphique / un graphique dans un fichier. Par ex. PNG, PDF ou SVG.
Timur
18

Vous pouvez également utiliser pygooglechart , qui utilise l' API Google Chart . Ce n'est pas quelque chose que vous voudrez toujours utiliser, mais si vous voulez un petit nombre de bons graphiques simples et toujours en ligne, et surtout si vous affichez de toute façon dans un navigateur, c'est un bon choix.

Tony Meyer
la source
7
Un mot d'avertissement, les graphiques que Google vous permet de créer sont plutôt limités en taille (largeur * hauteur <= 300 000 pixels). En outre, Google Charts (et non l'API Python) s'étouffera avec des ensembles de données de taille même modeste. Sinon, ils sont super.
Pat Notz
1
Les graphiques d'images Google sont toujours disponibles, mais obsolètes. Pour plus d'informations, rendez-vous sur developer.google.com/chart/image/?hl=nl
ndequeker
15

Vous n'avez pas mentionné le format de sortie dont vous avez besoin, mais reportlab est bon pour créer des graphiques au format pdf et bitmap (par exemple png).

Voici un exemple simple de graphique à barres au format png et pdf:

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

d = Drawing(300, 200)

chart = VerticalBarChart()
chart.width = 260
chart.height = 160
chart.x = 20
chart.y = 20
chart.data = [[1,2], [3,4]]
chart.categoryAxis.categoryNames = ['foo', 'bar']
chart.valueAxis.valueMin = 0

d.add(chart)
d.save(fnRoot='test', formats=['png', 'pdf'])

texte alternatif http://i40.tinypic.com/2j677tl.jpg

Remarque: l'image a été convertie en jpg par l'hôte de l'image.

serbaut
la source
2
Si vous obtenez une exception "RenderPMError: SetFont (Times-Roman) ne peut-il pas manquer les fichiers T1?" (comme je l'ai obtenu) sur d.save dans le code ci-dessus - La solution consiste à télécharger et à extraire reportlab.org/ftp/fonts/pfbfer.zip dans le répertoire reportlabs / fornts
Shekhar
+1 pour l'effort de générer un exemple pratique.
vmassuchetto le
6

Le Caire

Elmarco
la source
2
Pourquoi est-il bon? L'avez-vous utilisé?
Nick
Oui, j'ai utilisé dot_line_plot () dans les outils de reporting / statistiques. C'est joli et facile. Voir la meilleure réponse de Rodrigo à propos de Matplotlib et CairoPlot. J'utilise également Matplotlib. En fait, je l'utilise en ce moment.
elmarco
Des personnes étranges n'ont pas saisi votre réponse, mais la réponse actuellement la plus votée.
pihentagy
Je pense que cela obtiendrait plus de votes positifs s'il y avait un exemple minimal. Votre réponse deviendra inutile lorsque le lien sera mort.
Martin Thoma
merci, le blog a déjà beaucoup d'informations. et l'auteur lui-même a répondu ici avec plus de détails plus tard.
elmarco
6

J'ai utilisé pychart et j'ai pensé que c'était très simple.

http://home.gna.org/pychart/

Tout est en python natif et n'a pas de bus de dépendances. Je suis sûr que matplotlib est charmant, mais je téléchargerais et installerais pendant des jours et je veux juste un graphique à barres rouge!

Il ne semble pas avoir été mis à jour depuis quelques années mais bon ça marche!

Tullaman
la source
4

Avez-vous examiné ChartDirector pour Python ?

Je ne peux pas parler de celui-ci, mais j'ai utilisé ChartDirector pour PHP et c'est plutôt bien.

Thomas Owens
la source
ChartDirector fonctionne bien avec Python. Je l'ai utilisé régulièrement pour produire des parcelles multilignes.
pwdyson
4

NodeBox est génial pour la création de graphiques bruts.

Mark Cidade
la source
4

Si vous aimez utiliser gnuplot pour le traçage, vous devriez considérer Gnuplot.py . Il fournit une interface orientée objet à gnuplot et vous permet également de passer des commandes directement à gnuplot. Malheureusement, il n'est plus activement développé.

mhagger
la source
3

Je suis fan de PyOFC2: http://btbytes.github.com/pyofc2/

C'est juste un package qui facilite la génération des données JSON nécessaires pour Open Flash Charts 2, qui sont très belles. Consultez les exemples sur le lien ci-dessus.

Gourneau
la source
0

Vous pouvez également envisager des graphiques Google .

Ce n'est pas techniquement une API python, mais vous pouvez l'utiliser à partir de python, il est raisonnablement rapide à coder et les résultats ont tendance à être beaux. Si vous utilisez vos parcelles en ligne, ce serait une solution encore meilleure.

Tyler
la source
0

PLplot est un progiciel multiplateforme permettant de créer des parcelles scientifiques. Ils ne sont pas très jolis (accrocheurs), mais ils sont assez beaux. Jetez un œil à quelques exemples (code source et images).

La bibliothèque principale PLplot peut être utilisée pour créer des tracés xy standard, des tracés semi-log, des tracés log-log, des tracés de contour, des tracés de surface 3D, des tracés maillés, des graphiques à barres et des camemberts. Il fonctionne sous Windows (2000, XP et Vista), Linux, Mac OS X et d'autres Unices.

Cristian Ciupitu
la source