[英]How to make a color map with many unique colors in seaborn
我想制作具有许多(数百个)独特颜色的颜色图。
这段代码:
custom_palette = sns.color_palette("Paired", 12)
sns.palplot(custom_palette)
返回具有 12 种独特颜色的 palplot。
但是这段代码:
custom_palette = sns.color_palette("Paired", 24)
sns.palplot(custom_palette)
返回具有 12 种独特颜色的 palplot,似乎重复了两次。
我如何获得 24 种(或更多)独特的颜色?
“配对”调色板只有 12 种颜色,因此您不能有超过 12 种不同的颜色。
选择顺序调色板以获得超过 12 种颜色。
例如“火箭”、“mako”或“viridis”:
custom_palette = sns.color_palette("viridis", 24)
sns.palplot(custom_palette)
我想你有几个选择。
使用圆形颜色系统,您可以生成任意数量*的不同色调。 这些将是“有序的”,但您可以生成一个列表并对其进行排列,甚至可以在执行此操作之前组合通过改变亮度/饱和度值生成的多个列表。
colorcet
包包括 Glasbey 颜色图,它有大量不同的色调,亮度/饱和度有一些变化,没有特定的顺序。 您可以使用来自任何使用 matplotlib 注册其颜色图的包中的名称颜色图引用; 或者你可以生成一个列表并传递它。
* 这不是真的,出于一个无聊的原因和一个有趣的原因。 无聊的原因是大多数显示器都是 8 位的,所以对于每个 RGB 枪,您实际上只能获得 256 个不同的值。 更有趣(也有问题)的原因是人类感知无法区分颜色,因为它们具有不同的 8 位 RGB 值。 所以你可以用大量的颜色制作一个图,但它不会以这种方式出现在观众面前。 这究竟有多大的问题取决于您的应用程序,但要牢记这一点非常重要。
绝对有办法得到你想要的! 幸运的是,Seaborn 能够读取colorcet
调色板,这些调色板有一些不错的选择来获得更广泛的定性颜色:
from sklearn.datasets import make_blobs
import colorcet as cc
import matplotlib.pyplot as plt
import seaborn as sns
blobs, labels = make_blobs(n_samples=1000, centers=25, center_box=(-100, 100))
palette = sns.color_palette(cc.glasbey, n_colors=25)
sns.scatterplot(x=blobs[:,0], y=blobs[:, 1], hue=labels, data=blobs, palette=palette)
plt.legend(ncol=5, bbox_to_anchor=(1, 1))
plt.show()
结果在下图中具有 25 种不同的颜色:
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.