# Creating a smooth surface in 3D

4 messages
Open this post in threaded view
|

## Creating a smooth surface in 3D

 Dear mpl friends, My objective is to create a molecular surface using matplotlib. I used the snippet pasted below to create a series of spheres (attached png), drawn using the atom attributes (their positions and radius). From here, I would like to create a smooth surface which can depict the shape of the molecule surface (curves,cavities etc). Based on examples in net, I get a mixed feeling that either triangulation or making 3D grids are some directions to proceed. If anyone has some suggestions or better protocols for such task with some example data, it would be of great help to me. fig = plt.figure(figsize=(6,6),dpi=140) ax1 = fig.add_subplot(111, projection='3d') # Define spherical coordinates u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] S = np.cos(u)*np.sin(v) C = np.sin(u)*np.sin(v) T = np.cos(v) for P,R in zip(positions,radii):         ax1.plot_wireframe(R*S+P[0],R*C+P[1],R*T+P[2],color='r',alpha=0.4) Thanks in advance, Bala-- C. Balasubramanian _______________________________________________ Matplotlib-users mailing list [hidden email] https://mail.python.org/mailman/listinfo/matplotlib-users test.png (633K) Download Attachment
Open this post in threaded view
|

## Re: Creating a smooth surface in 3D

 mplot3d is good for real simple 3d scenes, but it falls apart when you start composing things like this. You might want to consider using something like glumpy or mayavi for better results. There are some discussions in the past on the problems inherent in creating spheres in mplot3d. There are some interesting solutions, but they get fairly complex pretty quickly.Cheers!Ben RootOn Mon, May 28, 2018 at 8:16 AM, Bala subramanian wrote:Dear mpl friends, My objective is to create a molecular surface using matplotlib. I used the snippet pasted below to create a series of spheres (attached png), drawn using the atom attributes (their positions and radius). From here, I would like to create a smooth surface which can depict the shape of the molecule surface (curves,cavities etc). Based on examples in net, I get a mixed feeling that either triangulation or making 3D grids are some directions to proceed. If anyone has some suggestions or better protocols for such task with some example data, it would be of great help to me. fig = plt.figure(figsize=(6,6),dpi=140) ax1 = fig.add_subplot(111, projection='3d') # Define spherical coordinates u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j] S = np.cos(u)*np.sin(v) C = np.sin(u)*np.sin(v) T = np.cos(v) for P,R in zip(positions,radii):         ax1.plot_wireframe(R*S+P[0],R*C+P[1],R*T+P[2],color='r',alpha=0.4) Thanks in advance, Bala-- C. Balasubramanian _______________________________________________ Matplotlib-users mailing list [hidden email] https://mail.python.org/mailman/listinfo/matplotlib-users _______________________________________________ Matplotlib-users mailing list [hidden email] https://mail.python.org/mailman/listinfo/matplotlib-users