2013-08-19 4 views
4

Comment inverser l'ordre sur l'axe z d'un tracé 3D (c'est-à-dire négatif est en hausse, et positif est en baisse)? Le code suivant produit un cône avec la base pointant vers le bas; Y at-il une commande (comme ax.reverse_zlim3d(True) ou quelque chose?) qui peut être utilisée pour changer l'ordre des tiques?Inverser l'axe Z sur matplotlib 3D Plot

Le code suivant trace un cône avec la base vers le bas. Je voudrais inverser l'ordre de l'axe z pour qu'il trace avec la base pointant vers le haut, comme un cornet de crème glacée, avec -1 en haut du graphique au lieu du fond.

from matplotlib import pyplot as p 
from mpl_toolkits.mplot3d import Axes3D # @UnusedImport 

import numpy as np 
from math import pi, cos, sin 

z = np.arange(0, 1, 0.02) 
theta = np.arange(0, 2 * pi + pi/50, pi/50) 

fig = p.figure() 
axes1 = fig.add_subplot(111, projection='3d') 
for zval in z: 
    x = zval * np.array([cos(q) for q in theta]) 
    y = zval * np.array([sin(q) for q in theta]) 
    axes1.plot(x, y, -zval, 'b-') 
axes1.set_xlabel("x label") 
axes1.set_ylabel("y label") 
axes1.set_zlabel("z label") 

p.show() 

Cone Plot

Répondre

9

Utilisez la méthode invert_zaxis du Axes3D:

from matplotlib import pyplot as p 
from mpl_toolkits.mplot3d import Axes3D # @UnusedImport 

import numpy as np 
from math import pi, cos, sin 

z = np.arange(0, 1, 0.02) 
theta = np.arange(0, 2 * pi + pi/50, pi/50) 

fig = p.figure() 
axes1 = fig.add_subplot(111, projection='3d') 
for zval in z: 
    x = zval * np.array([cos(q) for q in theta]) 
    y = zval * np.array([sin(q) for q in theta]) 
    axes1.plot(x, y, -zval, 'b-') 
axes1.set_xlabel("x label") 
axes1.set_ylabel("y label") 
axes1.set_zlabel("z label") 

axes1.invert_zaxis() 

p.show() 

enter image description here

+0

Pour une raison quelconque cela supprime toutes les tiques et les étiquettes de mon axe z. –