【问题标题】:Plotting several spheres on the same graph在同一张图上绘制多个球体
【发布时间】:2017-04-04 01:10:57
【问题描述】:

我正在编写代码来绘制球体。我正在使用单独的函数生成随机点,我想将它们作为球体添加到同一个图中。目前,为每个球体创建单独的图表。代码如下所示。这里的磁盘是 [x, y, z] 形式的列表。另外,是否可以使 x、y 和 z 轴的长度相等?非常感谢。

def plot_disks2(disk, radius, c, ax=None):
    fig = plt.figure(figsize=(12,12), dpi=300)
    ax = fig.add_subplot(111, projection='3d')

    u = np.linspace(0, 2 * np.pi, 100)
    v = np.linspace(0, np.pi, 100)

    x = radius * np.outer(np.cos(u), np.sin(v))
    y = radius * np.outer(np.sin(u), np.sin(v))
    z = radius * np.outer(np.ones(np.size(u)), np.cos(v))


    ax.plot_surface(x+disk[0], y+disk[1], z+disk[2],  rstride=4, cstride=4, color=c, linewidth=0, alpha=0.5)

【问题讨论】:

    标签: python-2.7 matplotlib mplot3d


    【解决方案1】:

    简而言之,建议您使用一个函数来生成数据和另一个用于绘图,如下所示:

    import matplotlib.pyplot as plt
    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D
    
    def disks2(disk, radius):
        u = np.linspace(0, 2 * np.pi, 100)
        v = np.linspace(0, np.pi, 100)
        x = radius * np.outer(np.cos(u), np.sin(v))
        y = radius * np.outer(np.sin(u), np.sin(v))
        z = radius * np.outer(np.ones(np.size(u)), np.cos(v))
        return x+disk[0],y+disk[1],z+disk[2]
    
    def plotting_spheres(data, colors):
        fig = plt.figure(figsize=(12,12), dpi=300)
        ax = fig.add_subplot(111, projection='3d')
        for k,sph in enumerate(data):
            x, y, z = sph[0], sph[1], sph[2]
            ax.plot_surface(x, y, z,  rstride=4, cstride=4, 
                            color=colors[k], linewidth=0, alpha=0.5)
        ax.set_aspect("equal")
        plt.show()
    
    N = 5 # spheres
    points = np.random.randint(1,10,(N,3))
    rs = np.random.random((N,1))
    colors = ("r","g","b","y","m")
    
    data = [disks2(points[k,:], rs[k]) for k in range(N)]
    plotting_spheres(data, colors)
    

    对于轴方面,您可以使用set_aspect 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多