Python seaborn-1-color

Python 数据可视化 (data visualization)库 – seaborn,该库的底层是 matplotlib,。但 seaborn 比 matplotlib 更简单,也更现代化一点。本问着重介绍统计学使用的各种图表以及 seaborn 中对应的使用。

本问首先讲述 seaborn 的色彩配置

1. 色彩搭配

虽然我们不是专业做 UI 设计的,但是选择合适的颜色搭配,对数据可视化非常有帮助

先上一个 UI 扁平化颜色选择网站,非常有帮助: flatuicolorpicker

P.S. 由于之前做 Qt 项目的时候,对 Qt 自带的 stylesheet 非常不满意,因此在 github 的开源 stylesheet 的基础上,参考现代 Web 设计的颜色搭配,终于对色彩搭配入门了。其实随着扁平化越来越流行,在论文的图表设计时,对颜色选择仔细考量,可能有更多收获。

如果发现自己对 UI 设计有兴趣了,有几个国外网站推荐:

  1. uplabs
  2. Google 推出的 material design

看到好看的个人博客,也可以研究下色彩搭配

然后推荐一个绘图表颜色选择的网站: colorbrewer2.org, 可以直接选择一个系列的色彩 (分 sequential: 同一颜色谱系由深到浅; diverging: 中间色系为背景色,两个极端的色系非常深,而且对比强烈, qualitative: 不同颜色谱系,均为深色),同时可以将颜色导出, 具体选项自己操作一下就会了

2. Matplotlib color

由于 seaborn 的后端是采用 matplotlib 库,因此颜色表示兼容 matplotlib ,这里先介绍 matplotlib

  • an RGB or RGBA tuple of float values in [0, 1] (e.g. (0.1, 0.2, 0.5) or (0.1, 0.2 , 0.5, 0.3))
  • a hex RGB or RGBA string (e.g., ‘#0F0F0F’ or ‘#0F0F0F0F’)
  • a string representation of a float value in [0, 1] inclusive for gray level (e.g., ‘0.5’)
  • one of {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}, 分别对应 b: blue, g: green, r: red, c: cyan, m: magenta, y: yellow, k: black, w: white
  • a X11/CSS4 color name
  • a name from the xkcd color survey: prefixed with xkcd: (e.g., xkcd:sky blue ,注意冒号后面不要留空格) (过去很常见,但现在随着扁平化越来越流行,强烈推荐使用扁平化颜色,不推荐使用色彩过于鲜明的颜色)
  • a “CN” color spec, 好像有点复杂,可以自行查阅

除了 ‘CN’,其他所有字符串颜色表达不区分大小写

3. Seaborn color palette

参考 官方手册

color_palette() is used internally by any function that has a palette argument (and in some cases for a colorargument when multiple colors are needed).

color_palette() will accept the name of any seaborn palette or matplotlib colormap . It can also take a list of colors specified in any valid matplotlib format (RGB tuples, hex color codes, or HTML color names). The return value is always a list of RGB tuples.

Also, calling color_palette() with no arguments will return the current default color cycle.

A corresponding function, set_palette(), takes the same arguments and will set the default color cycle for all plots. You can also use color_palette() in a with statement to temporarily change the default palette

3.1 qualitative color palettes

a set of six colors that evoke the standard matplotlib color cycle :

‘deep’, ‘muted’, ‘pastel’, ‘bright’, ‘dark’, ‘colorblind’

注意: 每个集合都只有 6 种颜色

3.2 hls color palette

如果想要设置比 6 种更多的颜色,推荐使用 hls circular color space

或者直接调用 hls_palette() ,可以设置亮度和饱和度

由于人眼视觉系统的特点: 对于非常强烈的颜色亮度, 我们感觉RGB 颜色中每个颜色通道不是相同的。我们会觉得黄色和绿色更浅一些,而蓝色更深一些。为了弥补这一点,可以采用 husl 颜色系统.

3.3 color brewer palettes

这就是我们前面介绍的网站,这里不重复了

color Brewer 网站的特点是设计了一套对色盲也有效的颜色方案 (http://en.wikipedia.org/wiki/Color_blindness)

比如:

上面的参数怎么填 ?

在 Color Brewer 中,选中一个 color scheme,那么在网页地址会出现如下信息: http://colorbrewer2.org/#type=qualitative&scheme=Paired&n=3 , 显然它对应的颜色方案名字为 “Paired”,n=3 表示选 3 个颜色, 类似还有:

sns.palplot(sns.color_palette("Set2", 10))

如果我们想完全定制化自己的颜色,怎么办 ? (扁平化颜色的最佳选择)

3.4 xkcd color

xkcd 支持 949 命名颜色, 使用seaborn 内置的字典 xkcd_rgb 获得名字键值对应的rgb颜色

>>> sns.xkcd_rgb["denim blue"]
'#3b5b92'

例子:

3.5 sequential color palettes

统一色系的连续颜色面板,一般用于表征某个 qualitative variable 的不同水平。

这里仍然采用网站 ColorBrewer 的 sequential color scheme。比如:

如果想获得反序颜色,在 palette name 后加 _r 后缀

如果想获得更深的颜色,加 _d 后缀,

3.6 sequential “cubehelix” palettes

使用 cubehelix_palette() 函数设置 cubehelix 颜色

例子:

3.7 更简单一点的 sequential palettes

light_palettedark_palette

3.8 diverging color palettes

还是参见 网站 ColorBrewer 的方案命名

自定义可以用 diverging_palette() 函数

One thought on “Python seaborn-1-color

发表评论

电子邮件地址不会被公开。 必填项已用*标注