Seaborn プロットの透明性

Manav Narula 2021年11月20日
Seaborn プロットの透明性

このチュートリアルでは、Python で Seaborn のプロットの透明度を制御する方法について説明します。

プロットの透明度を制御するために、プロット関数内で alpha 引数を使用できます。デフォルトでは、その値は 1 です。このパラメーターの値の範囲は 0 から 1 で、値が 0 に達すると、プロットはより透明になり、見えなくなります。これは、seaborn モジュールのほとんどのプロット関数で直接使用できます。

例えば、

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Index": [1, 2, 3, 4, 5, 6, 7, 8],
    }
)

sns.lineplot(data=df, y="Day 1", x="Index", alpha=0.4)

Seaborn のラインプロットのアルファパラメータ

alpha パラメータの値は 1 より大きくなる可能性があることに注意してください。ただし、その値が整数から離れるほど、プロットはより透明になります。同様に、整数に近づくほど、プロットは明るくなります。これを理解するのは少し複雑になる可能性があることを考えると、パラメータを 0 から 1 の間に保つだけです。

上記の例では、seaborn モジュールを使用して折れ線グラフを作成し、alpha パラメーターを 0.4 に設定することで、折れ線グラフをより透明にしました。

1つのプロットで、alpha パラメーターを指定できるのは 1 回だけです。ただし、透明度は、さまざまな変数を区別する方法として使用できます。

例えば、

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Day 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Index": [1, 2, 3, 4, 5, 6, 7, 8],
    }
)
sns.lineplot(data=df, x="Index", y="Day 2", alpha=1)
sns.lineplot(data=df, x="Index", y="Day 1", alpha=0.3)

Seaborn の 2つのプロットのアルファ

上記のコードでは、2つの変数を同じグラフにプロットしました。基本的に、一方のプロットはもう一方のプロットの上にプロットされ、両方とも alpha の値が異なります。一方の変数がもう一方の変数よりも透明になるため、透明度に基づいて 2つの値を区別できます。

alpha 引数は、さまざまな FacetGrid、PairGrid オブジェクトでも使用できます。このようなオブジェクトの場合、map() 関数でもパラメーターを使用できます。

次のコードを参照してください。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Day 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Index": [1, 2, 3, 4, 5, 6, 7, 8],
    }
)
g = sns.FacetGrid(df)
g.map(sns.lineplot, "Index", "Day 1", alpha=0.4)

seaborn の facetgrid の gmap を使用したアルファ

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn