是否可以控制从 matplotlib 颜色图中检索哪些颜色?

Lee*_*ian 6 python colors matplotlib

我想将图中的颜色分配给由整数表示的标称数据。我想从定性颜色图中绘制颜色,特别是我想从 Set3 中绘制五种颜色:

Matplotlib 内置定性色彩图

问题是我想使用前五种颜色,但颜色映射器对我的数据进行标准化,五个分类值的范围从 1 到 5,并从 12 种颜色中选择第 1、4、7、10 和 12 种颜色。颜色设置。

基本上,matplotlib.cm.get_cmap允许您指定多种颜色,但在范围内进行标准化:

from matplotlib import cm
set3_5 = cm.get_cmap("Set3", lut = 5)
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西matplotlib.colors.ListedColormap,它有一个参数N,可以在N 个项目之后截断颜色列表而不进行标准化。但我不知道如何将内置颜色图传递给.ListedColormap

Joh*_*anC 8

您将cm.get_cmap("Set3").colors获得色彩图中 12 种颜色的列表。可以对该列表进行切片以获得特定的颜色。它可以用作 的输入ListedColormap

请注意,对于连续颜色图(例如 viridis),该列表有 256 种颜色。您可以使用 获得均匀间隔的子集cm.get_cmap("viridis", 8).colors,然后再次切片,例如,如果您不想使用太亮的颜色。

这是一个例子:

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

cmap = matplotlib.colors.ListedColormap(matplotlib.cm.get_cmap("Set3").colors[:5])
plt.scatter(np.random.uniform(0, 10, 50), np.random.uniform(0, 10, 50), c=np.random.uniform(0, 10, 50), cmap=cmap)
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

例子