2013-10-02 25 views
1

简短问题: 我想使用带翼的egde结构绘制不同的形状,因此我有一个类实际绘制了任何翼状的渐变,另一个类定义了立方体和其他形状。现在我想在同一个图上绘制2个立方体,但是我不能,每个图中我都会得到一个立方体。同一绘图上的多个对象(MATPLOTLIB)

长的问题: 我想绘制使用翅EGDE strucutre不同的形状,所以我有:

class WEdge -> wedge_instance = WEdge(vertices, faces) 

,然后我对每个我需要绘制例如形状一类:

class Box -> simplebox = Box(vertices, faces, translation, rotation) 

楔形I类实际使用下面的代码绘制的对象:

 ax = a3.Axes3D(pl.figure()) 
     for k in range(self.nFaces): 
      currentColumn = self.faces[k,:] 
      vtx = np.zeros([4,3]) 
      j = 0 
      for i in currentColumn: 
       vtx[j] = self.vertices[i-1] 
       j = j +1 
     tri = a3.art3d.Poly3DCollection([vtx]) 
     tri.set_color(colors.rgb2hex(sp.rand(3))) 
     tri.set_edgecolor('b') 
     ax.add_collection3d(tri) 

问题是当我想在同一个图中绘制两个立方体时。我试图保持,GCA的许多可能的组合等,但在最后,我总是得到图1中一个立方体,另一个在图2

例子:

>>>Box(3,1,3, [0,1,0], np.eye(3)) 
>>> # hold, gca, timer... 
>>>Box(3,1,3, [1,0,3], np.eye(3)) 

Box(3,1,3, [0,1,0], np.eye(3)Box(3,1,3, [1,0,3], np.eye(3)

回答

2

不要定义一个新的轴为每个“结构”:

ax = a3.Axes3D(pl.figure()) 

axWEdge级的,所以他们都可以绘制在同一轴线上:

def init(self, ..., ax=None): 
    self.ax = ax if ax else a3.Axes3D(pl.figure()) 

we1 = WEdge() 
we2 = WEdge(ax=we1.ax) 

或许更平等,

ax = a3.Axes3D(pl.figure()) 
we1 = WEdge(ax) 
we2 = WEdge(ax) 

您可能还需要通过ax到你的立方体课呢。

+0

简单,清晰,工作..完美答案谢谢! – JAWE

相关问题