Seaborn库 手册翻译(二)
第二部分颜色控制。
配色是图表设计中非常重要的一方面,恰当的着色可以有效的展现数据的特征。网络上有许多学习可视化配色的资源,我比较喜欢 Rob Simmon的series of bolg posts和more technical paper(科学上网)。matplotlib文档现在也有一个很好的教程,说明了如何在内置色彩映射中构建的一些感知特性。
Seaborn让选择和使用调色板变得简单,且适合你所遇到的数据类型以及你的可视化目标。
%matplotlib inline
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(rc={
"figure.figsize": (6, 6)})
np.random.seed(sum(map(ord, "palettes")))
建立配色方案
最重要的用于建立独立配色方案的函数是color_palette()
这个函数提供了许多(not all)在seaborn中生成颜色的方式。它在任意拥有palette参数的函数内部被使用(在某些需要多种颜色的情况下也可以转入color参数)。
color_palette()
可以接受任意的seaborn调色板和matplotlib colormap(除了jet,当然你也不该用这玩意~)。它也可以接收一系列在任意有效的matplotlib格式(RGB tuples, hex color codes, or HTML color names)下设置好的颜色。它的返回值通常是一个RGB元组的list。
最后,无参数调用color_palette()
会返回默认的颜色集。
相对应地,set_palette函数可以接受同样的参数,可以为所有图片设置颜色。你依旧可以在with语句下调用color_palette()
来暂时修改默认调色板。(见下文)
一般而言,离开数据的具体特征讲着色都是耍流氓。所以我们分三种不同类型的调色板:分类色板、连续变化(颜色渐变)色板和发散(极端值深,中间值浅)色板,来讲解color_palette()
和其他Seaborn 调色板函数。
- Sequential,按顺序渐变的。 - Light colours for low data, dark for high data
- Diverging,彼此之间差异变化较大的。 - Light colours for mid-range data, low and high contrasting dark colours
- Qualitative,这个用于最大程度地显示不同类之间的差别。 - Colours designed to give maximum visual difference between classes
分类色板
分类(定类)色板是你在区分无特定顺序的离散数据时的最佳选择。
当你导入Seaborn库时,默认的颜色循环被改成一组六个颜色。这会让你想起matplotlib的颜色循环,当然咱这个漂亮多了。
current_palette = sns.color_palette()
sns.palplot(current_palette)
默认的颜色主题有6种不同的风格,
deep, muted, pastel, bright, dark和colorblind。
使用圆形颜色系统
当你有6种以上颜色需要区分的时候,最简单的方式是在一个圆形的颜色空间内划出均匀间隔的颜色。(这样的色调变化会保证亮度和饱和度不变)。这是seaborn函数中大多数的默认方式。
最为常见的方式是采用hls颜色空间,这是一个RGB值的简单转换。
sns.palplot(sns.color_palette("hls", 8