plotting dispersión 3d en matplotlib

Tengo una colección de matrices Nx3 en scipy / numpy y me gustaría hacer una dispersión tridimensional, donde los ejes X e Y están determinados por los valores de la primera y segunda columna de la matriz, la altura de cada bar es la tercera columna en la matriz, y el número de barras está determinado por N.

Cada matriz representa un grupo de datos diferente y quiero que cada uno sea trazado con un color diferente, y luego establecer una leyenda para toda la figura.

Tengo el siguiente código

fig = pylab.figure()
s = plt.subplot(1, 1, 1)
colors = ['k', "#B3C95A", 'b', '#63B8FF', 'g', "#FF3300",
          'r', 'k']
ax = Axes3D(fig)
plots = []
index = 0

for data, curr_color in zip(datasets, colors):
    p = ax.scatter(log2(data[:, 0]), log2(data[:, 1]),
                   log2(data[:, 2]), c=curr_color, label=my_labels[index])

    s.legend()
    index += 1

    plots.append(p)

    ax.set_zlim3d([-1, 9])
    ax.set_ylim3d([-1, 9])
    ax.set_xlim3d([-1, 9])

El problema es que ax.scatter traza las cosas con transparencia y me gustaría que se eliminen. Además, me gustaría establecer los xticks, yticks y zticks, ¿cómo puedo hacer eso?

Finalmente, la llamada de leyenda no aparece, aunque estoy llamando a label = "" para cada llamada de dispersión. ¿Cómo puedo hacer que aparezca la leyenda?

Muchas gracias por su ayuda

Respuestas a la pregunta(3)

Su respuesta a la pregunta