【问题标题】:My colorbar doesn't show the right colors (Python, matplotlib)我的颜色条没有显示正确的颜色(Python、matplotlib)
【发布时间】:2022-01-08 16:09:41
【问题描述】:

我一直试图让我的颜色条显示与我的散点图相同的颜色光谱。它不是我的颜色分级数据点的粉红色/紫色到黑色光谱,而是显示颜色条的默认颜色。我在这里阅读了多个其他主题但无济于事,但如果我错过了可以解决我的问题的内容,请提醒我注意类似的主题。

我制作了一个简短的代码来说明我的问题:

import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng()
arr = np.arange(7000)
rng.shuffle(arr)
r = np.sqrt(np.random.random(7000))
theta = np.random.uniform(high = 2*np.pi, size = 7000)
X = np.array(r*np.cos(theta))
Y = np.array(r*np.sin(theta))

def values_to_colormap(values):
    values_scale = values/np.max(values)
    (a,) = np.shape(values)
    cmap = values_scale.reshape(a,1)*np.array([[0.6, 0.4, 0.6]])
    return cmap

points_colors = values_to_colormap(arr)

ps = plt.scatter(X,Y, marker = '.', color = points_colors)
plt.colorbar(ps, orientation='horizontal')
plt.axis('equal')
plt.show();

【问题讨论】:

  • 建议您使用scatter:plt.scatter(X, Y, c=arr, marker='.', cmap=cmap, vmin=0, vmax=np.max(arr))的c参数,而不是指定颜色。这将您的问题推到制作颜色图 cmap:matplotlib.org/stable/tutorials/colors/…

标签: python matplotlib scatter-plot colorbar


【解决方案1】:

颜色条使用散点图的cmap 和norm。在这种情况下,给出了单独的颜色,并且颜色条回退到默认颜色图 ('viridis') 和默认规范(因为没有给出 vmin 或 vmax 也没有给出明确的颜色值,使用 0 和 1) .

您的 values_to_colormap 函数将 0 映射到颜色 (0, 0, 0),并将最大值映射到 (0.6, 0.4, 0.6)。这相当于在给定颜色之间使用vmin=0、vmax=arr.max() 和LinearSegmentedColormap 的规范:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

rng = np.random.default_rng()
arr = np.arange(7000)
rng.shuffle(arr)
r = np.sqrt(np.random.random(7000))
theta = np.random.uniform(high=2 * np.pi, size=7000)
X = np.array(r * np.cos(theta))
Y = np.array(r * np.sin(theta))

ps = plt.scatter(X, Y, marker='.', c=arr, vmin=0, vmax=arr.max(),
                 cmap=LinearSegmentedColormap.from_list('', [(0, 0, 0), (0.6, 0.4, 0.6)]))
plt.colorbar(ps, orientation='horizontal')
plt.axis('equal')
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2018-09-22
    • 2015-11-23
    相关资源
    最近更新 更多