Matplotlib 配色方案

在用matplotlib做图的时候,通常需要配色。 matplotlib 自己提供了一套解决配色方案,除此之外还有一个非常小巧的python包 palettable 提供了一系列的专业配色方案。这些对于python画图来说应该是足够了。

Matplotlib 配色方案

官方网址

colormap 分为四种类型:

  • Sequential:在两个色调中近似单色的变化平稳的色图。Sequential colormap 是绘制科学数据理想的配色方案,这种方案内在表现出从低到高的变化。

  • Diverging: 有中间色,由中间色向两段不同的颜色缓慢变化。这种配色方案适合数据有中间值的情况。

  • Qualitative: 离散的颜色,颜色变化较快。

  • Miscellaneous: 其他不属于以上三种的配色方案。

Palettable 配色方案

完全基于Python的配色库,小巧,没有其他依赖。体格虽小但是能力不小,不仅是matplotlib完美的解决方案还可以为网站应用配色。

来源

Palettable 收录了以下配色库中的配色。

  • cmocean
  • Colorbrewer2
  • Cubehelix
  • matplotlib
  • MyCarta
  • Tableau
  • The Wes Anderson Palettes blog

推荐一个在线的可视化配色库
colorbrewer2

安装

Python2 Python3 都支持pip

1
pip install palettable

寻找颜色

命名规则 <颜色名>_<颜色数量>,反色加上_r
使用时需要先导入包:

palettable.cmocean.diverging
palettable.cmocean.sequential
palettable.colorbrewer.diverging
palettable.colorbrewer.qualitative
palettable.colorbrewer.sequential
palettable.matplotlib
palettable.mycarta
palettable.tableau
palettable.wesanderson

如果要使用 Dark2_7 配色方案

1
from palettable.colorbrewer.qualitative import Dark2_7

接口

通用接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
name
The name of the palette.
type
One of 'diverging', 'qualitative', or 'sequential'.
number
The number of defined colors in the palette.
colors
The defined colors in the palette as a list of RGB tuples in the range 0-255.
hex_colors
Colors as a list of hex strings (e.g. '#A912F4').
mpl_colors
Colors as a list of RGB tuples in the range 0-1 as used by matplotlib.
mpl_colormap
A continuous, interpolated matplotlib LinearSegmentedColormap.

Palette 接口

1
2
3
4
5
6
7
8
9
10
11
12
get_mpl_colormap
Use this method to get a matplotlib color map and pass custom keyword arguments to LinearSegmentedColormap.from_list.
show_as_blocks
Show the defined colors of the palette in the IPython Notebook. Requires ipythonblocks to be installed.
show_discrete_image
Show the defined colors of the palette in the IPython Notebook. Requires Matplotlib Palettes to be installed.
show_continuous_image
Show the continuous, interpolated palette in the IPython Notebook. Requires Matplotlib Palettes to be installed.
save_discrete_image
Save an image of the defined colors of palette to a file. Requires Matplotlib Palettes to be installed.
save_continuous_image
Save an image of the continuous, interpolated palette to a file. Requires Matplotlib Palettes to be installed.

使用方法

三种常见使用方法

Color Cycle

改变matplotlib的默认颜色循环。使用 .mpl_color 属性。

1
ax.set_color_cycle(palettable.colorbrewer.qualitative.Dark2_8.mpl_colors)

Colormap

给cmap传参,使用 .mpl_color 属性。:

1
2
3
ax.imshow(data, cmap=Blues_8.mpl_colormap)
#or
ax.plot(data, cmap=Blues_8.mpl_colormap)

Discrete Colormap

.mpl_colormap属性是连续的,使用 ListedColormap 离散化。

1
cmap = ListedColormap(palettable.colorbrewer.qualitative.Dark2_7.mpl_colors)