Scatter Plot 3D with labels and spheres

前端 未结 1 1624
梦如初夏
梦如初夏 2020-12-15 13:01

I am trying to make a scatter plot with some data points (x,y,z,radius) and this is my result up to now:

import numpy as np
from mpl_toolkits.mplot3d import          


        
相关标签:
1条回答
  • 2020-12-15 13:41

    You can create a plot that uses spheres instead of circle markers by drawing one at each location as described here. Here's an example:

    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    
    def drawSphere(xCenter, yCenter, zCenter, r):
        #draw sphere
        u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]
        x=np.cos(u)*np.sin(v)
        y=np.sin(u)*np.sin(v)
        z=np.cos(v)
        # shift and scale sphere
        x = r*x + xCenter
        y = r*y + yCenter
        z = r*z + zCenter
        return (x,y,z)
    
    
    x = 10*np.random.rand(20)
    y = 10*np.random.rand(20)
    z = 10*np.random.rand(20)
    r = np.random.rand(20)
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    
    # draw a sphere for each data point
    for (xi,yi,zi,ri) in zip(x,y,z,r):
        (xs,ys,zs) = drawSphere(xi,yi,zi,ri)
        ax.plot_wireframe(xs, ys, zs, color="r")
    
    
    plt.show()
    

    spheres in 3D plot

    To fix the label positioning problem try adding a second line as described here.

    0 讨论(0)
提交回复
热议问题