Python:如何使用Python绘制3d图形?

Bru*_*uce 23 python matplotlib

我正在使用matplotlib来做这件事

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = Axes3D(fig)

x = [6,3,6,9,12,24]
y = [3,5,78,12,23,56]

ax.plot(x, y, zs=0, zdir='z', label='zs=0, zdir=z')

plt.show()
Run Code Online (Sandbox Code Playgroud)

现在,这将构建一个在3d空间中水平的图形.如何使图表垂直以使其面向用户?

我想要做的是构建多个这样的垂直图形,这些图形以一定距离分开并面向用户.

Dan*_*l G 12

bp的答案可能会很好,但有一个更简单的方法.

您当前的图形在z轴上是"平坦的",这就是为什么它是水平的.您希望它是垂直的,这意味着您希望它在y轴上"平坦".这涉及对代码的最小修改:

from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = Axes3D(fig)

x = [6,3,6,9,12,24]
y = [3,5,78,12,23,56]
# put 0s on the y-axis, and put the y axis on the z-axis
ax.plot(xs=x, ys=[0]*len(x), zs=y, zdir='z', label='ys=0, zdir=z')
plt.show()
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过使用ys参数的不同值轻松地拥有多个这样的图形(例如,ys=[2]*len(x)相反会将图形略微放在后面).


Gae*_*aux 7

Mayavi,特别是mlab模块,提供强大的3D绘图,可以处理大型或复杂的数据,并且应该易于在numpy阵列上使用.


Ben*_*Ben 7

您可以使用view_init()函数设置3d绘图的视角.以下示例适用于matplotlib的1.1版.

from mpl_toolkits.mplot3d import axes3d
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = [6,3,6,9,12,24]
y = [3,5,78,12,23,56]

ax.plot(x, y, zs=0, zdir='z', label='zs=0, zdir=z')
ax.view_init(90, -90)
plt.show()
Run Code Online (Sandbox Code Playgroud)