【问题标题】:Changing colors in a scatterplot using Matplotlib with python使用 Matplotlib 和 python 更改散点图中的颜色
【发布时间】:2021-10-01 22:35:15
【问题描述】:

我目前正在学习 Matplotlib 课程。我得到了一张图像,以 4 个不同的角度将图像创建为 3D 子图 4 次。这是一个线性图。随着数据的变化,图会改变颜色。因为它是一个图像,我不确定实际变化从哪里开始。我不想要一个确切的答案,只是解释它是如何工作的。我已经为一个小列表找到了很多方法,但这有 75 个数据点,如果不添加 75 个条目,我似乎无法做到这一点。 我也试图理解 cmap 但我也对此感到困惑。 此外,它需要在没有 Seaborn 的情况下完成。 This is part of the photo.

【问题讨论】:

    标签: python matplotlib colors scatter-plot


    【解决方案1】:

    我发现您的问题有点难以理解。我认为您需要一个将输入 x/y 参数映射到您选择的颜色图中的颜色的函数。请看下面的例子:

    import numpy as np
    import matplotlib.pyplot
    
    
    def number_to_colour(number, total_number):
        return plt.cm.rainbow(np.linspace(0,1.,total_number))[list(number)]
    
    
    x = np.arange(12)
    y = x*-3.
    z = x
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(x, y, z, c=number_to_colour(x, len(x)))
    plt.show()
    

    plt.cm.rainbow(np.linspace(0,1.,total_number)) 创建一个长度为total_number 的颜色数组,在颜色映射中均匀分布(在本例中为rainbow)。修改此数组的索引(或将 np.linspace 更改为具有所需缩放比例的另一个函数),应该为您提供所需的颜色缩放。

    【讨论】:

    • 好的,我想我理解它是如何工作的,除了这一行: return plt.cm.rainbow(np.linspace(0,1.,12))[list(number)] 我假设 plt .cm.rainbow 是色彩图的路径。但是为什么行空间会创建 12 位小数呢?
    • 另外,这是一个 3D 图,所以 Z 也需要包含在内。
    • 是的 'rainbow' 是颜色图,它可以被任何 matplotlib 颜色图替换。 plt.cm.rainbow() 将从 0 到 1 之间的数字生成颜色(给出颜色图谱的极值)。因此,plt.cm.rainbow(np.linspace(0,1.,12)) 是一个包含 12 种不同颜色的数组,跨越颜色图“彩虹”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2022-12-12
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多