Python matplotlib -> 3D-Balkendiagramm -> anpassen der tick label position, transparent bars
Ich versuche zu erstellen, die ein 3D-Balkendiagramm-Histogramm in Python mit bar3d() in Matplotlib.
Habe ich zu dem Punkt, wo kann ich meine Anzeige Histogramm auf dem Bildschirm nach übergabe einiger Daten, aber ich komme auf Folgendes:
- Anzeigen von Achsenbeschriftungen korrekt (derzeit findet sich letzten (oder ersten?) tick labels)
- Entweder machen die Zecken auf jeder Achse (z.B. für 'Mo') zeigen entweder, um es auf den entsprechenden blauen Balken, oder positionieren Sie die Beschriftung für die zwischen den großen Teilstrichen.
- Machen die Balken semi-transparent.
Bild der plot hochgeladen hier
Ich habe versucht, an mehreren verschiedenen Argumente der 'ax' etwa, aber nicht haben, etwas zu arbeiten, trotz und vermute, ich habe falsch verstanden, was zu geben. Ich bin sehr dankbar für jede Hilfe zu diesem Thema.
Hier ist ein Beispiel für den code, an dem ich arbeite:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#from IPython.Shell import IPShellEmbed
#sh = IPShellEmbed()
data = np.array([
[0,1,0,2,0],
[0,3,0,2,0],
[6,1,1,7,0],
[0,5,0,2,9],
[0,1,0,4,0],
[9,1,3,4,2],
[0,0,2,1,3],
])
column_names = ['a','b','c','d','e']
row_names = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
fig = plt.figure()
ax = Axes3D(fig)
lx= len(data[0]) # Work out matrix dimensions
ly= len(data[:,0])
xpos = np.arange(0,lx,1) # Set up a mesh of positions
ypos = np.arange(0,ly,1)
xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25)
xpos = xpos.flatten() # Convert positions to 1D array
ypos = ypos.flatten()
zpos = np.zeros(lx*ly)
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = data.flatten()
ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color='b')
#sh()
ax.w_xaxis.set_ticklabels(column_names)
ax.w_yaxis.set_ticklabels(row_names)
ax.set_xlabel('Letter')
ax.set_ylabel('Day')
ax.set_zlabel('Occurrence')
plt.show()
InformationsquelleAutor Dman | 2012-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen die Balken semi-transparent, Sie müssen nur die alpha-parameter. alpha=0 bedeutet 100% transparent ist, während alpha=1 (default) bedeutet, dass 0% transparent.
Versuchen Sie dieses, es funktioniert, um die Balken semi-transparent:
Bezüglich der ticks Position, kann man es mit so etwas wie dies (in der ersten Liste auf plt.xticks oder plt.yticks enthält die "Werte", wo Sie wollen, um die Zecken, und die zweite Liste enthält, was Sie wirklich wollen zu nennen, die Zecken):
Am Ende, bekomme ich dieses Bild:
File "matrix_to_3D_histogram.py", line 43, in <module> ax.bar3d(xpos,ypos,zpos, dx, dy, dz, color='b', alpha=0.5) TypeError: bar3d() got an unexpected keyword argument 'alpha'
Das ist komisch, ich habe überhaupt kein problem, und ich habe gerade kopiert den code und verändert die Zeile hab ich doch gesagt. Welche version verwenden Sie? Ich bin mit matplotlib 1.1.0.
um zu testen, die version von matplotlib Typ:
import matplotlib; print matplotlib.__version__
Hallo nochmal, sieht aus wie Sie es geschafft haben, dass die Abbildung auf der Suche, wie ich wollte, das ist toll, danke! Ich schaute auf meine version von Matplotlib, und (da bin ich auf Ubuntu 10.04) ich habe die version 0.99.1.1 installiert synaptic standardmäßig. Ich habe nur versucht, die Installation von Matplotlib version 1.1.0 von der Quelle, aber Python immer noch meint, ich hätte version 0.99.1.1. Muss ich die alte version deinstallieren oder ändern eines path-variable irgendwo?
der alpha-Wert nicht mehr arbeiten 🙁
InformationsquelleAutor carla