【问题标题】:3d graph plot dots with color带颜色的 3d 图形绘图点
【发布时间】:2019-03-07 22:22:23
【问题描述】:

我的目标是绘制以下数据的 3d 维图:

(array([[-0.45940028, -1.07401008, -0.60800963],
       [-0.34535859, -0.80739745,  0.48825026],
      ...
       [-0.39106198, -0.91424521, -0.7051101 ]]), array([0, 0, 1, 1, ...
       1, 0, 1, 1, 0, 1, 0, 0]))

最后一个数组代表两种不同的颜色(颜色无所谓)

如何从该数据集中创建一个带有关联颜色的 3d 图形?

【问题讨论】:

    标签: python numpy matplotlib 3d


    【解决方案1】:

    这是使用数组切片和使用最后一个数组作为颜色的方法

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    
    data = (np.array([[-0.45940028, -1.07401008, -0.60800963],[-0.34535859,-0.80739745,  0.48825026],[-0.14535859, -0.60739745,  0.68825026], [-0.44535859, -0.10739745,  0.28825026], [-0.64535859, -0.20739745,  0.18825026],[-0.39106198, -0.91424521, -0.7051101 ]]), np.array([0, 0, 1, 1, 1, 0]))
    
    ax.scatter(data[0][:,0], data[0][:,1], data[0][:,2], zdir='z', s=80, c=data[1])
    

    【讨论】:

    • 正如我所愿。一个小站点注释,你忘了plt.show()
    • 我没有用,因为我用的是jupyter notebook
    【解决方案2】:

    你可以使用 mplot3d:

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    xs = [1,2,3,4,5]
    ys = [1,2,3,4,5]
    zs = [1,2,3,4,5]
    ax.scatter(xs, ys, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs)
    
    plt.show()
    

    【讨论】:

    • 但是每个点的颜色如何呢?我应该能够有一个 4. 数组指定图形上每个 (x,y,z) 点的颜色
    • c 参数用于颜色:一种颜色。 c 可以是单个颜色格式字符串,也可以是长度为 N 的颜色规范序列,或者是要使用 cmap 和通过 kwargs 指定的规范映射到颜色的 N 数字序列(见下文)。请注意,c 不应是单个数字 RGB 或 RGBA 序列,因为它与要进行颜色映射的值数组无法区分。 c 可以是一个二维数组,其中的行是 RGB 或 RGBA,但是,包括为所有点指定相同颜色的单行的情况。
    猜你喜欢
    • 2018-09-24
    • 2011-07-26
    • 1970-01-01
    • 2012-07-12
    • 2016-12-30
    • 2023-03-08
    • 2016-04-11
    • 2012-02-12
    • 2017-03-17
    相关资源
    最近更新 更多