首页 >> 大全

Python Seaborn (2) 斑驳陆离的调色板

2023-12-14 大全 28 作者:考证青年

数据猿官网 |

今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+社区

颜色显然比图形风格的其他方面都更加重要,因为颜色使用得当就可以有效显示或隐藏数据中的特征。有许多的好资源都可以了解关于在可视化中使用颜色的技巧,推荐Rob 的《 of blog posts》和这篇进阶的技术文章,文档现在也有一个很好的教程,说明了如何在内置色彩映射中构建的一些感知特性。

让你更容易选择和使用那些适合你数据和视觉的颜色。

通过()创建调色

最重要的直接设置调色板的函数就是()。这个函数提供了许多(并非所有)在内生成颜色的方式。并且它可以用于任何函数内部的参数设置(在某些情况下当需要多种颜色时也可以传入到color参数)

()允许任意的调色板或的颜色映射(除了jet,你应该完全不使用它)。它还可以使用任何有效的格式指定的颜色列表(RGB元组、十六进制颜色代码或HTML颜色名称)。返回值总是一个RGB元组的列表。

最后,直接调用没有传入参数的()将返回默认的颜色循环。

对应的函数()接受相同的参数,并为所有图设置默认的颜色循环。你也可以在with块中使用()来实现临时的更改调色板配置(下面有详细例子)。

通常在不知道数据的具体特征的情况下不可能知道什么类型的调色板或颜色映射对于一组数据来说是最好的。因此,我们将用三种不同类型的调色板:分类色板、连续色板和离散色板,来区分和使用()函数。

分类色板

分类色板(定性)是在区分没有固定顺序的数据时最好的选择。

在导入库后,默认的颜色循环被更改为一组六种颜色。虽然这些颜色可能会让你想起的标准颜色循环,但他们无疑更赏心悦目一些。

默认颜色主题共有六种不同的变化分别是:deep, muted, , , dark, 和 。类似下面的方式直接传入即可。

使用圆形颜色系统

当你有六个以上的分类要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变)。这是大多数的当他们需要使用比当前默认颜色循环中设置的颜色更多时的默认方案。

最常用的方法是使用hls的颜色空间,这是RGB值的一个简单转换。

当然,也可以使用()函数来控制颜色的亮度和饱和。

由于人类视觉系统的工作方式,会导致在RGB度量上强度一致的颜色在视觉中并不平衡。比如,我们黄色和绿色是相对较亮的颜色,而蓝色则相对较暗,使得这可能会成为与hls系统一致的一个问题。

为了解决这一问题,为husl系统提供了一个接口,这也使得选择均匀间隔的色彩变得更加容易,同时保持亮度和饱和度更加一致。

使用分类颜色调色板

另一种视觉上令人愉悦的分类调色板来自于Color 工具(它也有连续调色板和离散调色板,我们将在下面的图中看到)。这些也存在于颜色映射中,但是它们没有得到适当的处理。在这里,当你要求一个定性颜色的调色板时,你总是会得到离散的颜色,但这意味着在某一点它们会开始循环。

Color 工具的一个很好的特点是,它提供了一些关于调色板是色盲安全的指导。有各种各样的适合色盲的颜色,但是最常见的变异导致很难区分红色和绿色。一般来说,避免使用红色和绿色来表示颜色以区分元素是一个不错的主意。

为了帮助您从Color 工具中选择调色板,这里有()函数。这个函数必须在 中使用,它将启动一个交互式小部件,让您浏览各种选项并调整参数。

当然,您可能只想使用一组您特别喜欢的颜色。因为()接受一个颜色列表,这很容易做到。

使用xkcd颜色来命名颜色

xkcd包含了一套众包努力的针对随机RGB色的命名。产生了954个可以随时通过字典中调用的命名颜色。

如果你想花一些时间挑选颜色,或许这种交互式的可视化(官方链接失效)是非常有帮助的。除了将单一颜色从字典中取出,也可以通过名称列表传入()函数中取得颜色组。

连续色板

调色板中第二大类称为“顺序”。这种颜色映射对应的是从相对低价值(无意义)数据到高价值(有意义)的数据范围。虽然有时候你会需要一个连续的离散颜色调色板,用他们像()或者()功能映射更加常见(以及可能类似的功能)。

非常可能的是见到jet色彩映射(或其他采用调色板)在这种情况下使用,因为色彩范围提供有关数据的附加信息。然而,打的色调变化中往往会引入不连续性中不存在的数据和视觉系统不能自然的通过“彩虹色”定量产生“高”、“低”之分。其结果是,这样的可视化更像是一个谜题,模糊了数据中的信息而并非揭示这种信息。事实上,jet调色板可能非常糟糕,因为最亮的颜色,黄色和青色用于显示中间数值,这就导致强调了一些没有意义的数据而忽视了端点的数据。

所以对于连续的数据,最好是使用那些在色调上相对细微变化的调色板,同时在亮度和饱和度上有很大的变化。这种方法将自然地吸引数据中相对重要的部分.

Color 的字典中就有一组很好的调色板。它们是以在调色板中的主导颜色(或颜色)命名的。

牢记,你可能想使用()函数取绘制各种不同的选项。如果你想返回一个变量当做颜色映射传入或的函数中,可以设置参数为True。

()函数的连续调色板

调色板系统具有线性增加或降低亮度和色调变化顺序的调色板。这意味着在你的映射信息会在保存为黑色和白色(为印刷)时或被一个色盲的人浏览时可以得以保留。

拥有一个默认的内置版本可供创建:

为系统添加一个接口使得其可以在各种变化中都保持良好的亮度线性梯度。

通过的()函数返回的调色板与默认值稍有所不同,它不会在色轮周围旋转或覆盖更广的强度范围。还改变了排序使得更重要的值显得更暗:

默认情况下你只会得到一些与调色板相似的颜色的列表,但你也可以让调色板返回一个可以用=True传入或函数的颜色映射对象。

类似的,也可以在中使用ette()函数启动一个互助程序来帮助选择更适合的调色板或颜色映射。如果想让函数返回一个类似的颜色映射而非一个列表则需要传入=True。

使用() 和()调用定制连续调色板

这里还有一个更简单的连续调色板的使用方式,就是调用() 和(),这与一个单一颜色和种子产生的从亮到暗的饱和度的调色板。这些函数还伴有() and ()函数,这些函数启动了交互式小部件来创建这些调色板。

当然也可以创建一个颜色映射对象取代颜色列表。

默认情况下,任何有效的颜色可以传递给input参数。也可以在hls或husl空间中提供默认的rgb元组,您还可以使用任何有效的xkcd颜色的种子。

需要注意的是,为默认的input空间提供交互的组件是husl,这与函数自身默认的并不同,但这在背景下却是更有用的。

离散色板

调色板中的第三类被称为“离散”。用于可能无论大的低的值和大的高的值都非常重要的数据。数据中通常有一个定义良好的中点。例如,如果你正在绘制温度变化从基线值,最好使用不同色图显示相对降低和相对增加面积的地区。

选择离散色板的规则类似于顺序色板,除了你想满足一个强调的颜色中点以及用不同起始颜色的两个相对微妙的变化。同样重要的是,起始值的亮度和饱和度是相同的。

同样重要的是要强调,应该避免使用红色和绿色,因为大量的潜在观众将无法分辨它们。

你不应该感到惊讶的是,Color 颜色字典里拥有一套精心挑选的离散颜色映射:

用()使用定制离散色板

你也可以使用海运功能()为离散的数据创建一个定制的颜色映射。(当然也有一个类似配套的互动工具:ette())。该函数使用husl颜色系统的离散色板。你需随意传递两种颜色,并设定明度和饱和度的端点。函数将使用husl的端点值及由此产生的中间值进行均衡。

也可以用中间的色调来选择调色,而不是用亮度。

用()更改色变的默认值

() 函数有一个名为()的配套。它们之间的关系类似于在美学教程中涉及的 . ()。()接受与()相同的参数,但是它会更改默认的参数,以便成为所有的调色板配置。

()函数也可以在一个with块中使用,以达到临时更改调色板的目的。

简单常用色彩总结

分类:hls husl Set1~Set3(色调不同)

连续:Blues[蓝s,颜色+s] BuGn[蓝绿] (同色系渐变)

离散:BrBG[棕绿] RdBu[红蓝] [冷暖](双色对称)

本章后记

这章内容确认让对色彩与不同数据形式的图像之间的关系有了新的认识,恐怕色让图形好看和更有格调仅仅只是初级阶段。然而文中涉及了大量的色彩专用的名词和理论,只能不求甚解的翻出来强行理解了,谬误在所难免,欢迎各位大神指正,万分感谢!

本文作者 未禾,首发于作者知乎,,已获作者授权原创形式发布。

数据猿读者亲启:

名企&大佬专访精选

向下滑动启阅

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了