web-dev-qa-db-ja.com

matplotlibカラーマップとしてのseaborn color_palette

Seabornはcolor_paletteと呼ばれる関数を提供します。これにより、プロット用の新しいcolor_palettesを簡単に作成できます。

colors = ["#67E568","#257F27","#08420D","#FFF000","#FFB62B","#E56124","#E53E30","#7F2353","#F911FF","#9F8CA6"]

color_palette = sns.color_palette(colors)

Color_paletteをcmapに変換します。これをmatplotlibで使用できますが、どのようにこれを実行できるかわかりません。

悲しいことに、「cubehelix_palette」、「light_palette」などの機能だけで、「as_cmap」パラメータがあります。 「color_palette」は、残念ながらそうではありません。

38
Dremet

色のリストをseabornパレットからmatplolibのカラーマップに変換する必要があります(提案された変更については、thxから@RafaelLopesへ)。

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np
from matplotlib.colors import ListedColormap

# construct cmap
flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
my_cmap = ListedColormap(sns.color_palette(flatui).as_hex())

N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

enter image description here

37
Serenity

カラーパレットを生成するほとんどのseabornメソッドには、オプションの引数as_cmapこれはデフォルトでFalseです。 Matplotlibカラーマップを直接取得するために使用できます。

import seaborn as sns
import matplotlib.pylab as plt
import numpy as np

# construct cmap
my_cmap = sns.light_palette("Navy", as_cmap=True)

N = 500
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

enter image description here

22
Ramon Crehuet

最初の答えは何となく正しいですが、多くの不必要な情報があり、長すぎます。正解は次のとおりです。

sns.color_palette()をmatplotlib互換のcmapに変換するには、2行のコードが必要です

from matplotlib.colors import ListedColormap
cmap = ListedColormap(sns.color_palette())
15
Generic Wevers

追加のヒント-連続したカラーバー/カラーマップが必要な場合、Seabornカラースキームに必要な色数として256を追加すると非常に役立ちます。

cmap = ListedColormap(sns.color_palette("Spectral",256))   
8
LauraD