2013-08-19 125 views
4

如何反轉3D繪圖z軸上的順序(即負向上,正向下)?下面的代碼產生一個錐體,底部朝下;是否有一個命令(如ax.reverse_zlim3d(True)或其他?),可用於更改訂單號?matplotlib上的反向Z軸3D繪圖

以下代碼繪製了一個錐體,其底部朝下。我想顛倒Z軸順序,使其與底部朝上一起繪製,如冰淇淋圓錐體,圖形頂部爲-1而不是底部。

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

回答

9

使用Axes3Dinvert_zaxis方法:

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

出於某種原因,這將刪除所有的蜱,並從我的z軸刻度標記。 –