Matplotlib在3D坐标轴中绘制2D多边形

2 投票
1 回答
2101 浏览
提问于 2025-04-16 06:20

我正在使用matplotlib这个工具来在3D坐标系中绘制一些数据,主要是2D曲线。我用ax = axes3d.Axes3D()来定义我的坐标轴,然后用ax.plot(x, y, zs='z')在3D空间中绘制我的2D曲线。

现在我想添加一些东西,类似于这个页面上展示的内容 http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html,但我想直接输入顶点的坐标。在这个例子中,他们有一个固定的z数组,并且绘制了顶点为(x,y)的多边形,而我想要的是z(x)(x,y)的顶点。有没有人知道怎么做到这一点?

其实我并不需要那种集合的东西,我只是想在任意方向上绘制一个大方块。

我尝试直接输入坐标并使用ax.plot()

verts = np.array([[0,0,0], [0,1,0], [1,1,1], [1,0,1], [0,0,0]])
ax.plot(verts[:,0], verts[:,1], verts[:,2], zdir='y')

确实绘制了一个方块,但我不知道怎么填充它的表面。

1 个回答

0

我希望这正是你想要的!

我的矩形的范围是从0到10,所以最大值(MAX)是10。

我一开始尝试在z轴和x轴之间定义一个坐标轴。我的选择是z=MAX-x。

接着,我为每一个小的x增量绘制了这个坐标轴,从而创建了矩形。

这是代码:

anArray = []    
for i in range(0, 101, 1):
    z = float(i)/10        
    #print "x: ", x
    y = 10 - z
    #print "y: ", y      
    for a in range(0, 101, 1):          
        anArray.append([float(a)/10, y, z])
    #endfor                    
#endfor
verts = np.array(anArray)
ax.plot(verts[:,0],verts[:,1],verts[:,2], zdir='y')

撰写回答