如何在seaborn中制作具有多种独特颜色的彩色地图

2024-09-27 23:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想制作一张有很多(数百种)独特颜色的彩色地图

此代码:

custom_palette = sns.color_palette("Paired", 12)
sns.palplot(custom_palette)

返回具有12种唯一颜色的批次。
但是这个代码:

custom_palette = sns.color_palette("Paired", 24)
sns.palplot(custom_palette)

返回具有12种独特颜色的Perpllot,看起来重复了两次

如何获得24种(或更多)独特颜色


Tags: 代码颜色custom地图color彩色snspalette
3条回答

“配对”调色板只有12种颜色,因此不能有超过12种不同的颜色

选择一个顺序调色板,使其具有12种以上的颜色

“火箭”、“mako”或“viridis”例如:

custom_palette = sns.color_palette("viridis", 24)
sns.palplot(custom_palette)

https://seaborn.pydata.org/tutorial/color_palettes.html

我想你有几个选择

使用circular color system可以生成任意数量*的不同色调。这些将是“有序的”,但您可以生成一个列表并对其进行排列,甚至可以在这样做之前组合通过改变亮度/饱和度值生成的多个列表

{a2}软件包包括Glasbey彩色贴图,这些贴图具有大量不同的色调,在亮度/饱和度上有一些变化,并且没有特定的顺序。您可以使用任何包中的按名称引用colormaps,该包将其colormaps注册到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种不同颜色的结果:

enter image description here

希望这有帮助

相关问题 更多 >

    热门问题