【问题标题】:How to colour data points on a 3D scatterplot in matplotlib如何在 matplotlib 中为 3D 散点图上的数据点着色
【发布时间】:2016-11-20 10:06:51
【问题描述】:

编辑:我设法弄清楚发生了什么。 Scatter 有一个参数'line-width' (lw=n),它决定了散点图的绘图点周围的线的粗细。因为我的情节点大小为 1 (s=1),所以线宽很粗,实际上覆盖了情节点的颜色。将线宽设置为 0 (lw=0) 的粗细就可以了。

我想生成数据点的 3d 散点图,根据它们的 y 坐标值对它们进行着色,但我无法让这些点实际着色。

如果数据点的值较低,则颜色应更接近色谱的蓝色端。如果该值较高,则颜色应更接近光谱的红色端。

我已经设法在 2D 中绘制了我想要的东西,但是在 3D 中复制该过程时遇到了问题。当前代码仅将点绘制为黑色。

这是我的 3D 尝试代码,以及 2D 所需结果的屏幕截图。我到底做错了什么?

x_points、y_points 和 z_points 是浮点值列表。

import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D

def three_dimensional_scatterplot(
    self, x_points, y_points, z_points, data_file
):

    cm1 = cm.get_cmap('gist_rainbow')

    fig = plt1.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(
        x_points,
        y_points,
        z_points,
        s=1,
        c=y_points,
        cmap=cm1
    )

    ax.set_xlabel('X axis')
    plt1.show()

【问题讨论】:

    标签: python matplotlib 3d mplot3d


    【解决方案1】:

    你必须像这里一样绘制:

    import matplotlib.pyplot as plt
    from matplotlib import cm
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    
    x = np.random.rand(25)
    y = np.random.rand(25)
    z = np.random.rand(25)
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    p3d = ax.scatter(x, y, z, s=30, c=y, cmap = cm.coolwarm)
    plt.show()
    

    【讨论】:

    • 知道了,我猜大小是这里的决定因素。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多