シーボーンプロットの凡例
凡例は通常、グラフの隅に表示され、プロットのさまざまな要素を示すために使用される小さなボックスです。また、グラフに複数のデータがある場合は、どのコンポーネントがどのデータを表しているかがわかります。
このチュートリアルでは、簡単な Seaborn のプロットに凡例を追加またはカスタマイズする方法を学習します。
デフォルトでは、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], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)
sns.lineplot(data=df)
凡例が右上隅にあることに注意してください。
凡例を明示的に追加したい場合は、Matplotlib ライブラリの legend()
関数を使用できます。このようにして、独自のラベルを明示的に追加できます。
例えば、
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]}
)
sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"])
seaborn ライブラリは、matplotlib モジュールに基づいており、それを使用してグラフを作成していることに注意してください。したがって、Seaborn のプロットにも legend()
関数を使用できます。
凡例を少しカスタマイズすることもできます。たとえば、次に示すように、legend()
関数の title
パラメータを使用して凡例にタイトルを追加できます。
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]}
)
sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], title="Title_Legend")
fontsize
と title_fontsize
は、それぞれ凡例とそのタイトルのコンテンツのフォントを変更するために使用される 2つのパラメーターです。
以下のコードを参照してください。
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]}
)
sns.lineplot(data=df)
plt.legend(
labels=["Legend_Day1", "Legend_Day2"],
title="Title_Legend",
fontsize="large",
title_fontsize="10",
)
title_fontsize
は matplotlib のすべてのバージョンに存在するわけではないので、使用する前にバージョンを確認してください。
loc
および bbox_to_anchor
パラメーターを使用して、凡例ボックスのサイズと位置を指定できます。
loc
は、凡例の場所を指定するために使用されます。異なる番号は異なる場所を指定します。その値はデフォルトで 0 です。これは、最小のオーバーラップが発生する凡例を配置するのに最適な位置を検索することを意味します。
bbox_to_anchor
は、loc
パラメーターで指定された場所に対する凡例の位置を指定します。bbox_to_anchor
パラメーターを 2 要素のタプルで設定すると、それらの値は、指定された loc
に沿って配置するための x 値および y 値と見なされます。
例えば、
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]}
)
sns.lineplot(data=df)
plt.legend(labels=["Legend_Day1", "Legend_Day2"], loc=2, bbox_to_anchor=(1, 1))
loc
引数の値は 2 であり、左上の位置を示していることに注意してください。
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