Seaborn を使用して異なるカラーパレットを作成する
この記事では、Seaborn カラーパレットのさまざまなオプションについて説明します。Seaborn でカスタムカラーパレットを作成する方法も紹介します。
Seaborn を使用してさまざまなカラーパレットを作成する
Seaborn をインポートし、それを seaborn
として保存することから始めましょう。また、tips
と呼ばれる Seaborn ライブラリからいくつかのデータをロードします。
import seaborn as seaborn
customer_bill
データフレームの上部を見て、顧客ごとに異なる請求額とチップ額が残っていることを確認してください。また、曜日やその食事が提供された日時など、さまざまな特性があります。
customer_bill = seaborn.load_dataset("tips")
customer_bill.head()
次に、set_style
を darkgrid
に設定し、scatterplot
関数を使用して散布図を作成します。
この scatterplot
関数では、x 軸に total_bill
を渡し、y 軸に tip
を表します。data
プロパティは、customer_bill
データフレームから取得されます。
別の列、day
のようなカテゴリ列を hue
プロパティに渡すこともできます。これは、曜日ごとに異なる色に分割されます。
import seaborn as seaborn
# collect data from seaborn
customer_bill = seaborn.load_dataset("tips")
customer_bill.head()
# set grid style
seaborn.set_style("darkgrid")
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill, hue="day")
# uncomment the below code if you are not using jupyter notebook
# import matplotlib.pyplot as plot
# plot.show()
お気づきのように、Seaborn は散布図でデフォルトのカラーパレットを使用しています。color_palette()
関数を使用して、デフォルトの Seaborn のパレットを確認できます。
seaborn.color_palette()
これにより、Seaborn が最初の 4 色に使用するデフォルトのカラーパレットが表示されます。
color_palette()
関数でいくつかのオプションを渡すことができます。Pastel2
などの有効な文字列名を渡すと、他のカラーパレットが表示されます。
seaborn.color_palette("Pastel2")
さまざまな名前のカラーパレットを使用できます。この palette
引数を追加し、それを有効なパレット名と等しく設定するだけです。
seaborn.set_style("whitegrid")
seaborn.scatterplot(
x="total_bill", y="tip", data=customer_bill, hue="day", palette="Pastel2"
)
Seaborn 内で使用できる名前付きカラーパレットは現在 170 種類あります。名前を忘れた場合は、調べに行く必要はありません。次のような無効なパレット名を渡すことができます。
seaborn.scatterplot(
x="total_bill", y="tip", data=customer_bill, hue="day", palette="GH"
)
出力:
これらの多くが _r
であることに気付いた場合。これらは同じパレットですが、順序が逆になっています。
seaborn.color_palette("Pastel2_r")
パレット引数を渡さない場合、Seaborn はデフォルトのパレットカラーを設定します。
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill)
これらのドットの色を更新したい場合は、それを color
と呼びます。パレットではありません。図全体で 1 色しかないので色ですが、この色をストリングブルーに切り替えるとどうなるか見てみましょう。
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill, color="blue")
これは Matplotlib ブルーであり、Seaborn ブルーではありません。
color_palette()
関数を使用して Seaborn の青色を抽出し、最初の 2 色を選択するとします。これにより、最初のタプルは青、2 番目のタプルはオレンジになります。
BLUE, ORANGE = seaborn.color_palette()[:2]
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill, color=BLUE)
Seaborn でカスタムカラーパレットを作成する
Seaborn で、単一の色に基づいて、または複数の色をブレンドして、カスタムカラーパレットを作成できます。1つの特定のカテゴリを強調する強調表示パレットを作成することもできます。
Seaborn を使用してカスタムパレットを作成する方法はいくつかあります。このパレットから追加の色が必要な場合は、整数を渡すことができます。
seaborn.color_palette("Pastel2", 10)
light_palette()
関数にアクセスしてカラーパレットを作成することもできます。このメソッドは、1つの名前付き color を受け入れます。このパレットには、1つの色のさまざまな色合いが含まれています。
seaborn.light_palette("gray")
Seaborn には、暗いパレットを作成する dark_palette()
関数があります。色は暗い色合いから始まり、指定された色まで上がります。
seaborn.dark_palette("red")
Seaborn では、この blend_palette()
関数を使用して発散パレットを作成することもできます。引数は色のリストになります。これにより、リストで渡したすべての色をブレンドするパレットが作成されます。
seaborn.blend_palette(["blue", "red", "green"], 12)
blend_palette()
をパレット引数に渡しましょう。blend_palette()
のデフォルトの色数は 6 であるため、これを行うとエラーが発生する可能性がありますが、日列には 4つの異なるカテゴリしかありません。
seaborn.scatterplot(
x="total_bill",
y="tip",
data=customer_bill,
hue="day",
palette=seaborn.blend_palette(["green", "red"]),
)
出力:
day
列カテゴリが存在するため、整数を渡す必要があります。
seaborn.scatterplot(
x="total_bill",
y="tip",
data=customer_bill,
hue="day",
palette=seaborn.blend_palette(["green", "red"], 4),
)
Seaborn は、ハイライトパレットを使用するオプションを提供します。これは、1つまたは 2つのカテゴリを強調したいときにいつでも使用されます。ユニークな日ごとにパレット辞書を作成します。
P_DICT = {k: "gray" for k in customer_bill.day.unique()}
P_DICT
その日の名前がこの辞書のキーになります。
図で金曜日を強調したい場合は、関心のあるカテゴリに赤
として新しい値を割り当てることができます。
P_DICT["Fri"] = "red"
seaborn.scatterplot(
x="total_bill", y="tip", data=customer_bill, hue="day", palette=P_DICT
)
金曜日を除いて、すべての日が灰色で、赤色になっていることがわかります。これは、特定の日を強調したい場合に役立ちます。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn