2009-11-02 4 views
11

Je fais régulièrement des figures (le type d'analyse de données exploratoire) dans R. Je programme aussi en Python et je me demandais s'il y aurait des fonctionnalités ou des concepts dans matplotlib qui mériteraient d'être étudiés. Par exemple, je suis assez content de R - mais sa fonction image() produira de gros fichiers avec une sortie pixellisée, alors que l'équivalent de Matlab (je programme aussi régulièrement dans Matlab) semble être gérable en taille de fichier et aussi lissé Le matplotlib fournit également de telles réductions ...? Mais plus généralement, je me demande quels autres avantages pourrait conférer matplotlib. Je ne veux pas dire que c'est une question à la traîne. Merci.matplotlib pour l'utilisateur R?

+1

jeter un oeil à cette question similaire: http://stackoverflow.com/questions/1177019/what-can-be-done-in-r-that-cant-be-done-with-python-numpy-scipy – dalloliogm

+1

Je me rends compte que c'est une vieille question, mais pour les nouveaux visiteurs: Utilisez simplement [ggplot2] (http://ggplot2.org/). Il a une courbe d'apprentissage abrupte, mais [great docs] (http://docs.ggplot2.org/current/), et produit de meilleurs tracés que matplotlib par défaut. – naught101

Répondre

11

Il est difficile de répondre à cette question.

J'ai récemment transféré une partie de ma charge de travail graphique de R à matplotlib. À mon humble avis, je trouve les graphes de matplotlib plus jolis (de meilleures couleurs par défaut, ils ont l'air plus nets et plus modernes). Je pense aussi que matplotlib rend les PNG beaucoup mieux. La vraie motivation pour moi, cependant, était que je voulais travailler avec mes données sous-jacentes en Python (et numpy) et non en R. Je pense que c'est la grande question à poser, dans quelle langue voulez-vous charger, analyser et manipuler vos données? D'autre part, un bonus pour R est que les paramètres par défaut fonctionnent (il y a une fonction pour tout). Je me retrouve souvent à creuser à travers les documents matplotlib (ils sont épais) à la recherche d'une façon obscure d'ajuster une bordure ou d'augmenter l'épaisseur d'une ligne. R routines de traçage ont une certaine maturité derrière eux.

+0

Merci pour vos pensées ... Je fais aussi des complots dans Matlab, donc je pensais que ça pourrait être une transition facile, mais je peux créer la plupart des graphismes que je peux imaginer en R (surtout avec des graphiques en grille) donc je vais attendre matplotlib - J'oublie qu'il y a des détails dans la personnalisation à apprendre dans chaque paquet et que ce serait un laps de temps indésirable pour l'instant ... – hatmatrix

3

Je pense que le plus grand avantage est que matplotlib est basé sur Python, que vous dites que vous connaissez déjà. Donc, c'est une langue de moins à apprendre. Il suffit de passer du temps à maîtriser Python, et vous bénéficierez à la fois directement de la tâche de traçage à portée de main et indirectement de vos autres besoins en Python. En outre, IMHO Python est un langage globalement plus riche que R, avec beaucoup plus de bibliothèques qui peuvent aider pour diverses tâches. Vous devez accéder aux données pour le traçage, et les données peuvent prendre de nombreuses formes. Sous quelque forme que ce soit, je suis sûr que Python a une bibliothèque efficace pour cela.

Et que diriez-vous de l'intégration de ces tracés dans des programmes plus complets, disons de simples GUI? matplotlib se lie facilement avec les librairies GUI de Python (comme PyQT) et vous pouvez faire des choses que seules votre imagination limite.

+0

Merci pour vos pensées - malgré que Python soit plus riche que R, je suis plus à l'aise avec R à bien des égards : sa liste intégrée peut aussi être un dictionnaire ordonné, une création rapide d'environnements temporaires (namespaces) pour le calcul local, de puissantes fonctions anonymes ... La création de l'interface graphique est un '+' pour Python - Je l'utilise avec des complots générés par Matlab + PIL parfois mais je fais aussi des interfaces graphiques simples en R pour l'analyse interactive. – hatmatrix

+1

Vous pouvez essayer d'appeler R depuis Python. Vous pouvez utiliser RPy, mais ce que je fais habituellement est d'écrire du code R dans un fichier, puis de lancer R en tant que processus en mode batch, en enregistrant les résultats sur le disque puis en récupérant Python. Fonctionne très bien. – telliott99