Question

Je dois tracer des données sous différentes formes. J'utilise actuellement Matplotlib et je suis assez satisfait des parcelles que je suis en mesure de suivre. produire.

Cette question concerne la manière de tracer le dernier. Les données sont similaires à la & Quot; table de distance & Quot ;, comme this (un peu plus grand, mon tableau mesure 128 x 128 et contient toujours au moins trois nombres par élément).

Maintenant, mes données sont bien meilleures " structurées " qu'un tableau de distance (mes données ne varient pas & "; de manière aléatoire &"; comme dans un tableau de distance trié par ordre alphabétique), ainsi un fichier 3D diagramme à barres , ou peut-être 3 d'entre eux, serait parfait. D'après ce que j'ai compris, un tel graphique manque dans Matplotlib.

Je pourrais utiliser un Countor3d (coloré) comme ces ou quelque chose en 2D comme imshow, mais ce n'est pas vraiment représentatif de la nature des données (les données n'ont de signification que dans mes 128 points, il n'y a rien entre deux points). Et la hauteur des barres est plus lisible que la couleur, IMO.

Ainsi, les questions:

  1. est-il possible de créer un graphique à barres 3D dans Matplotlib? Il devrait être clair que je veux dire avec un domaine 2D, pas seulement un graphique à barres 2D avec un & "Faux &"; Rendu 3D à des fins esthétiques
  2. si la réponse à la question précédente est non, existe-t-il une autre bibliothèque capable de le faire? Je préfère fortement quelque chose basé sur Python, mais je suis d'accord avec d'autres possibilités compatibles avec Linux
  3. si la réponse à la question précédente est non, avez-vous des suggestions sur la manière de montrer ces données? Par exemple. créer un tableau avec les valeurs, superposé à l'imshow ou à une autre couleur?
Était-ce utile?

La solution

MyavaVi2 peut créer graphiques à barres 3D (faites défiler un peu). Une fois que vous avez MayaVi / VTK / ETS / etc . installé tout fonctionne à merveille, mais il peut être un travail d'obtenir tout installé. Ubuntu a tout emballé, mais c'est la seule distribution Linux que je connaisse.

Autres conseils

Depuis quelque temps, matplotlib n’a plus de support 3D, mais il a été rajouté récemment . Vous devrez utiliser la version svn, car aucune version n’a été publiée depuis et la documentation est un peu clairsemée (voir examples / mplot3d / demo.py). Je ne sais pas si mplot3d prend en charge les graphiques à barres 3D réels, mais l’une des démos donne l’impression qu’elle pourrait être étendue à quelque chose comme ça.

Modifier: le code source de la démo se trouve dans les exemples , mais pour une raison quelconque, le résultat est ne pas. Je parle de la test_polys fonction, et voici à quoi cela ressemble:

exemple de figure http://www.iki.fi/jks/tmp/poly3d.png

La test_bar2D fonction serait encore meilleure, mais elle est commentée dans la démo car elle provoque une erreur avec la version actuelle de svn. Peut-être un problème trivial, ou quelque chose qui est plus difficile à résoudre.

Une autre possibilité est Gnuplot, qui peut dessiner une sorte de pseudo Les diagrammes à barres 3D et gnuplot.py permettent l'interfaçage avec Gnuplot à partir de Python. Je n'ai toutefois pas essayé moi-même.

Ceci est mon code pour un simple Bar-3d utilisant matplotlib.

import mpl_toolkits
from mpl_toolkits.mplot3d import Axes3D   
import matplotlib.pyplot as plt
%matplotlib inline

## The value you want to plot 
zval=[0.020752244,0.078514652,0.170302899,0.29543857,0.45358061,0.021255922,0.079022499,\
  0.171294169,0.29749654,0.457114286,0.020009631,0.073154019,0.158043498,0.273889264,0.419618287]    

fig = plt.figure(figsize=(12,9))
ax = fig.add_subplot(111,projection='3d')
col=["#ccebc5","#b3cde3","#fbb4ae"]*5
xpos=[1,2,3]*5
ypos=range(1,6,1)*5
zpos=[0]*15
dx=[0.4]*15
dy=[0.5]*15
dz=zval

for i in range(0,15,1):
     ax.bar3d(ypos[i], xpos[i], zpos[i], dx[i], dy[i], dz[i],     
color=col[i],alpha=0.75)

ax.view_init(azim=120)
plt.show()      

http://i8.tietuku.com/ea79b55837914ab2.png

Vous pouvez consulter Chart Director:

  

http://www.advsofteng.com

Il a une assez grande variété de tableaux et de graphiques et une belle API Python (et plusieurs autres langages).

Il existe deux éditions: la version gratuite place un texte de présentation sur l’image générée et le la version payante a un prix raisonnable.

Voici l'un des diagrammes à barres empilés en 3D les plus intéressants:

 exemple de graphique
(source: advsofteng.com )

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