能否控制从matplotlib颜色地图中检索出的颜色?

6

我希望将整数表示的名义数据分配给绘图中的颜色。我希望从一种定性色图中绘制颜色,具体来说,我希望从Set3中绘制五种颜色:

Matplotlib built-in Qualitative colormaps

问题在于我想使用前五种颜色,但是颜色映射器会对我的数据进行归一化处理,这些数据包括五个分类值,范围为1到5,并从12种颜色中选择第1、4、7、10和12种颜色。
基本上,matplotlib.cm.get_cmap允许您指定一定数量的颜色,但会在整个范围内进行归一化处理:
from matplotlib import cm
set3_5 = cm.get_cmap("Set3", lut = 5)

我希望能够得到类似于matplotlib.colors.ListedColormap的东西,它有一个参数N,可以在不归一化的情况下在N个项目后截断颜色列表。但是我不知道如何将内置的颜色映射传递给ListedColormap
1个回答

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()

example


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接