欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀matplotlib和seaborn顏色圖(colormap)和調(diào)色板(color palette)

 更新時間:2023年06月25日 08:54:17   作者:qiu_xingye  
這篇文章主要介紹了matplotlib和seaborn顏色圖(colormap)和調(diào)色板(color palette),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

顏色圖或調(diào)色板是指一系列的有規(guī)律的顏色的集合,可以區(qū)分不同類型的離散數(shù)據(jù)或不同值的連續(xù)數(shù)據(jù)。

一般在matplotlib中稱為colormap(在繪圖函數(shù)中的關(guān)鍵字為cmap),在seaborn中一般稱為color palette(在繪圖函數(shù)中的關(guān)鍵字為palette)。

由于seaborn是基于matplotlib開發(fā)的,因此matplotlib中的各類colormap一般seaborn均支持。

為統(tǒng)一起見,下文統(tǒng)稱為palette或調(diào)色板。

調(diào)色板一般分為三類:

  • 離散型(qualitative):用來表示沒有順序關(guān)系的不同數(shù)據(jù)連續(xù)型
  • (sequential):用來表示有序關(guān)系的連續(xù)數(shù)據(jù)連續(xù)雙邊型
  • (diverging):類似連續(xù)型,但數(shù)據(jù)的分布會跨越一個中間點(一般為0),在表示數(shù)據(jù)的特征時用來強調(diào)值在兩端的數(shù)據(jù),弱化值在中間的數(shù)據(jù)

下文分別列出各類常用的調(diào)色板若干。

import seaborn as sns

離散型

seaborn庫自帶的調(diào)色板

sns.color_palette()

seaborn除了默認的調(diào)色板外,自帶了"deep", “muted”, “pastel”, “bright”, “dark”, "colorblind"等6種調(diào)色板

sns.color_palette("deep")

pallettes = ["deep", "muted", "pastel", "bright", "dark", "colorblind"]
data = np.array([sns.color_palette(pat) for pat in pallettes])
fig = plt.figure(figsize=(9,16))
ax = fig.add_subplot(111)
ax.imshow(data)
for i, pat in enumerate(pallettes):
    ax.text(-0.6, i, pat, ha="right")
plt.axis("off");

# 示例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
col1 = ["A"]*5 + ["B"]*5
col2 = list("abcde")*2
val = np.random.rand(10)
df = pd.DataFrame({"col1":col1, "col2":col2, "val":val})
df
fig = plt.figure(figsize=(8,8))
fig.subplots_adjust(wspace=0.1, hspace=0.25)
for i, palette in enumerate(["deep", "muted", "bright", "dark"]):
    ax = fig.add_subplot(2, 2, i+1)
    sns.barplot(x="col2", y="val", hue="col1", data=df, ax=ax, palette=palette)
    ax.set_title(palette)

自定義調(diào)色板

可利用hls(色相、亮度、飽和度)顏色空間自定義任意數(shù)量顏色的調(diào)色板

sns.color_palette("hls", 8)

sns.color_palette("hls", 16)

sns.color_palette("husl", 8) # husl相比hls,基于人的視覺特點對顏色進行了修正

其它調(diào)色板

主要是matplotlib庫自帶的調(diào)色板,有’Pastel1’, ‘Pastel2’, ‘Paired’, ‘Accent’,‘Dark2’, ‘Set1’, ‘Set2’, ‘Set3’, ‘tab10’, ‘tab20’, ‘tab20b’, 'tab20c’等

sns.color_palette("Set2")

sns.color_palette("tab10")

連續(xù)型

主要有"rocket", “mako”, “flare"和"crest”,其中"rocket", “mako"適合較大的數(shù)值跨度;名稱后面加”_r"表示翻轉(zhuǎn)。

同時也支持matploblib自帶的"magma"、"viridis"等。

也可用sns.cubehelix_palette函數(shù)自定義。

fig = plt.figure(figsize=(24,8))
fig.subplots_adjust(wspace=0.1, hspace=0.25)
palettes = ["rocket", "mako", "flare", "crest", "magma", "viridis"]
palettes += [pat+"_r" for pat in palettes] 
data = np.random.rand(10,10)
for i, palette in enumerate(palettes):
    ax = fig.add_subplot(2, 6, i+1)
    sns.heatmap(data, cmap=palette)
    ax.set_title(palette)

連續(xù)雙邊型

主要有"vlag"和"icefire";以及matplotlib自帶的"Spectral"和"coolwarm";名稱后面加"_r"表示翻轉(zhuǎn)。

也可用sns.diverging_palette函數(shù)自定義

fig = plt.figure(figsize=(16,8))
fig.subplots_adjust(wspace=0.2, hspace=0.25)
palettes = ["vlag", "icefire", "Spectral", "coolwarm"]
palettes += [pat+"_r" for pat in palettes] 
data = np.random.rand(10,10)*2-1
for i, palette in enumerate(palettes):
    ax = fig.add_subplot(2, 4, i+1)
    sns.heatmap(data, cmap=palette)
    ax.set_title(palette)

參考

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論