2013-08-19 127 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轴刻度标记。 –