分类调色板

用 Python 提升数据可视化

Nick Strayer

Instructor

三个面板展示国家、城市和鸟类,作为分类数据示例

用 Python 提升数据可视化

感知上的限制

  • 尽量不超过 10 个类别
  • 考虑色盲可读性
sns.palplot(sns.color_palette('Set2', 11))

由于颜色太多而难以分辨的一组颜色

用 Python 提升数据可视化
# 为数据框添加所需组合的新列
pollution['interesting cities'] = [x if x in ['Long Beach', 'Cincinnati'] 
                                   else 'other' for x in pollution['city'] ]

sns.scatterplot(x="NO2", y="SO2", hue = 'interesting cities', palette='Set2',
                data=pollution.query('year == 2014 & month == 12'))

散点图:Long Beach 和 Cincinnati 用单独颜色,其他城市合并为"other"颜色

用 Python 提升数据可视化
colorbrewer_palettes = ['Set1',   'Set2',    'Set3',    'Accent', 
                        'Paired', 'Pastel1', 'Pastel2', 'Dark2']

for pal in colorbrewer_palettes: 
    sns.palplot(pal=sns.color_palette(pal))
    plt.title(pal, loc = 'left')

可用的分类调色板示例

用 Python 提升数据可视化

有序数据 (a)

  • 类别间有顺序

  • 固定数量的离散类别

显示四分位的图示

用 Python 提升数据可视化

有序数据 (b)

  • 类别间有顺序

  • 固定数量的离散类别

显示一周七天的图示

用 Python 提升数据可视化

有序数据 (c)

  • 类别间有顺序

  • 固定数量的离散类别

用表情从开心到难过的刻度图示

用 Python 提升数据可视化
colorbrewer_palettes = ['Reds', 'Blues', 'YlOrBr', 'PuBuGn', 'GnBu', 'Greys']

for i, pal in enumerate(colorbrewer_palettes): 
    sns.palplot(pal=sns.color_palette(pal, n_colors=i+4))

可用的有序调色板示例

用 Python 提升数据可视化
# 使用 qcut() 创建三分位列
pollution['NO2 Tertial'] = pd.qcut(pollution['NO2'], 3, labels = False)

# 按计算的三分位着色绘图 
sns.scatterplot(x="CO", y="SO2", hue='NO2 Tertial', palette="OrRd",
                data=pollution.query("city == 'Long Beach' & year == 2014"))

CO 与 SO2 散点图,NO2 的三分位用红色有序配色编码

用 Python 提升数据可视化

给类别上色吧

用 Python 提升数据可视化

Preparing Video For Download...