我特灵绘制一个立方体上的平面使用matplotib。
我正在做一个关于无人机(一个无人驾驶飞行器)着陆的项目,有这些测试,我必须想象。我有一个着陆飞机已经绘制如下所示。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
xs = np.linspace(-10, 10, 100)
ys = np.linspace(-10, 20, 100)
X, Y = np.meshgrid(xs, zs)
Z = 0 / X
fig = plt.figure(figsize=(25,25))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
ax.set_ylim([-40, 40])
ax.set_zlim([0, 10])
ax.set_xlim([-10, 10])
# Hide grid lines
# ax.grid(False)
plt.xlabel("X axis")
plt.ylabel("Y axis")
# Hide axes ticks
# ax.set_xticks([])
# ax.set_yticks([])
# ax.set_zticks([])
# plt.savefig("foo.png")
plt.show()
字符串
输出是下面的图像。
的数据
现在我想在图中绘制一个立方体。我有一个函数可以生成一个立方体的所有顶点,但是我在尝试绘制它时遇到了错误。顶点是从顶部西北,顶部东北,顶部东南,顶部西南生成的。同样适用于底部。
这是函数。
def createVertices(c3, stepSize):
hs = 0.5 * stepSize
a = [c3[0]-hs,c3[1]+hs,c3[2]+hs]
b = [c3[0]+hs,c3[1]+hs,c3[2]+hs]
c = [c3[0]+hs,c3[1]-hs,c3[2]+hs]
d = [c3[0]-hs,c3[1]-hs,c3[2]+hs]
e = [c3[0]-hs,c3[1]+hs,c3[2]-hs]
f = [c3[0]+hs,c3[1]+hs,c3[2]-hs]
g = [c3[0]+hs,c3[1]-hs,c3[2]-hs]
h = [c3[0]-hs,c3[1]-hs,c3[2]-hs]
return [a,b,c,d,e,f,g,h]
型
我必须动态地做这件事,因为我有超过100个测试用例。任何帮助都将不胜感激。
其他信息:
Jared建议使用almost similar question,但我遇到了来自ax.plot_surface(X,Y,1, alpha=0.5)
的错误AttributeError: 'int' object has no attribute 'ndim'
。
2条答案
按热度按时间bvpmtnay1#
由于Matplotlib第三方包S3Dlib具有预定义的立方体,因此只需使用它来获取:
的数据
其中代码为:
字符串
它出现在
createVertices
函数中,立方体中心坐标和宽度被传递进来,所以直接使用它们。k3bvogb12#
我设法解决了动态创建立方体。这是整个脚本。
字符串
我希望它能帮助别人在未来