Frage

Ich brauche einige Daten in verschiedenen Formen zu zeichnen. Derzeit bin ich mit Matplotlib und ich bin ziemlich glücklich mit den Stellplätzen ich in der Lage bin zu produzieren.

Diese Frage ist, wie die letzten plotten. Die Daten sind ähnlich wie die „Entfernungstabelle“, wie this (nur größer, mein Tisch ist 128x128 und hat immer noch 3 oder mehr Zahl pro Element).

Nun, meine Daten sind viel besser „strukturiert“ als eine Entfernungstabelle (meine Daten variieren nicht „zufällig“ wie in einer alphabetisch sortierten Entfernungstabelle), wodurch ein 3D- barchart , oder vielleicht drei von ihnen, wäre perfekt. Mein Verständnis ist, dass ein solches Diagramm in Matplotlib fehlt.

Ich könnte ein (farbig) Countor3d verwenden wie diesen oder etwas in 2D wie imshow, aber es ist nicht wirklich gut repräsentativ, was die Daten (die Daten bedeuten, nur in meinen 128 Punkten, gibt es nichts zwischen zwei Punkten). Und die Höhe der Stäbe ist besser lesbar als Farbe, IMO.

So sind die Fragen:

  1. ist es möglich, 3D-Balkendiagramm in Matplotlib zu schaffen? Es sollte klar sein, dass ich mit einer 2D-Domäne bedeuten, nicht nur ein 2D-Balkendiagramm mit einem „falschen“ 3D-Rendering für Ästhetik Zwecke
  2. , wenn die Antwort auf die vorherige Frage nein ist, dann gibt es eine andere Bibliothek in der Lage, das zu tun? Ich ziehe es stark etwas Python-basierte, aber ich bin OK mit anderen Linux-freundlichen Möglichkeiten
  3. , wenn die Antwort auf die vorherige Frage nein ist, dann haben Sie irgendwelche Vorschläge, wie diese Daten zeigen? Z.B. erstellen Sie eine Tabelle mit den Werten, überlagert die imshow oder andere farbige Art und Weise?
War es hilfreich?

Lösung

MyavaVi2 können eine href machen <= "http: //code.enthought. com / projects / MayaVi / docs / Entwicklung / html / MayaVi / mlab.html # d-data“rel = "nofollow noreferrer"> 3D-Balkendiagramme (scrollen ein wenig nach unten). Sobald Sie MayaVi / VTK / ETS / etc . installiert es das alles schön, aber es kann einige Arbeit bekommen alle installierten funktioniert. Ubuntu hat alles davon verpackt, aber sie sind die einzige Linux-Distribution Ich weiß, dass der Fall ist.

Andere Tipps

Seit einiger Zeit matplotlib hatte keine 3D-Unterstützung, aber es wird hinzugefügt zurück die Beispiele aber aus irgendeinem Grund ist das Ergebnis nicht. Ich meine die test_polys Funktion, und hier ist, wie es aussieht:

Beispiel Abbildung http://www.iki.fi/jks/tmp/poly3d.png

Die test_bar2D Funktion wäre noch besser, aber es ist in der Demo kommentiert, wie es einen Fehler mit der aktuellen SVN-Version verursacht. Könnte etwas triviales Problem sein, oder etwas, das schwerer zu beheben ist.

Eine weitere Möglichkeit ist Gnuplot, die eine Art von Pseudo zeichnen 3D-Balkendiagramme und gnuplot.py ermöglicht Interfacing von Python Gnuplot. Ich habe es selbst nicht ausprobiert, aber.

Dies ist mein Code für eine einfache Bar-3d mit 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

Sie könnten Chart Director finden Sie unter:

  

http://www.advsofteng.com

Es hat eine ziemlich große Vielzahl von Tabellen und Grafiken und hat eine schöne Python (und einige andere Sprachen) API.

Es gibt zwei Versionen: Die kostenlose Version eine Klappentext auf dem erzeugten Bild setzt, und die Pay-Version ist ziemlich preiswert.

Hier ist eine der interessanteren suchen 3D-Stapelbalkendiagramme:


(Quelle: advsofteng.com )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top