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:

  1. Anzeigen von Achsenbeschriftungen korrekt (derzeit findet sich letzten (oder ersten?) tick labels)
  2. 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.
  3. 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

Schreibe einen Kommentar