Seaborn 円グラフ
このチュートリアルでは、Matplotlib
の円属性と Seaborn のカラーパレットを使用して円グラフを作成する方法について説明します。
Seaborn で円グラフを作成する
円グラフは、さまざまな色のスライスを含む円グラフでデータを表します。円グラフの各スライスのサイズは、数値データの比率によって異なります。
円グラフは、数値データの割合を調査するために使用されます。データの割合を全体のパーセンテージとして表示します。特定のデータで 1つの数量の数値比率が高い場合、そのスライスサイズとパーセンテージは、円グラフに存在する他のスライスよりも大きくなります。
Python で seaborn を使用して円グラフを作成する場合は、Matplotlib
の pie 属性と Seaborn のカラーパレットを使用する必要があります。円グラフを作成するには、入力データとカラーパレットを渡す必要があります。
たとえば、ランダムなデータの円グラフを作成してみましょう。以下のコードを参照してください。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
colors = sns.color_palette("pastel")
plt.pie(data, colors=colors)
plt.show()
出力:
上記のコードでは、Seaborn のパステルカラーパレットを使用していますが、カラーパレットは好きなように変更できます。Seaborn には、濃い色、落ち着いた色、色覚異常、明るい色、暗い色など、さまざまなカラーパレットオプションがあります。
color_palette()
属性内の文字列としてカラーパレットを渡す必要があります。pie 属性には、ラベルの名前を含む文字列の配列を使用して円グラフにラベルを追加するなど、変更できる多くのパラメーターがあります。
autopct
パラメータを使用して、スライス内にテキストを追加することもできます。たとえば、ラベルを追加し、カラーパレットを変更し、各スライス内にスライスのパーセンテージを追加して、上記の円グラフを読みやすくしましょう。以下のコードを参照してください。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
labels = ["slice 1", "slice 2", "slice 3", "slice 4", "slice 5"]
colors = sns.color_palette("bright")
plt.pie(data, labels=labels, colors=colors, autopct="%0.0f%%")
plt.show()
出力:
各スライス内に任意のテキストを追加できますが、この例では各データのパーセンテージを追加しました。各スライス内のテキストの距離を設定することもできます。デフォルトでは、テキストの距離は 0.6 ですが、pctdistance
パラメーターを使用して変更できます。
labeldistance
パラメータを使用してラベル距離を設定することもできます。デフォルトでは、ラベルの距離の値は 1.1 ですが、任意の浮動小数点値に変更できます。各スライスの間にスペースを作成してオフセットを作成する場合は、explode パラメーターを使用してこれを行うことができます。
explode パラメーターの値は、入力データと同じ長さの配列である必要があります。たとえば、上記の円グラフの各スライスの間にオフセットを追加しましょう。以下のコードを参照してください。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3, 0.02, 0.02, 0.02, 0.02]
labels = ["slice 1", "slice 2", "slice 3", "slice 4", "slice 5"]
colors = sns.color_palette("bright")
plt.pie(data, labels=labels, colors=colors, autopct="%0.0f%%", explode=explode)
plt.show()
出力:
影のパラメータを使用して、円グラフの下に影を描くこともできます。デフォルトでは、shadow パラメーターは false に設定されていますが、true に設定することもできます。デフォルトでは、スライス 1 は 0 度から開始しますが、startangle
パラメーターを使用してその値を任意の浮動小数点値に設定することで変更できます。
デフォルトでは、スライスは x 軸から始まり、反時計回りの方向に従いますが、パラメーター値を false に設定することにより、時計回りに設定できます。textprops
引数を使用して、フォントサイズや色など、円グラフに存在するテキストのプロパティを設定することもできます。
wedgeprops
パラメータを使用して、ウェッジまたはスライスのプロパティを線幅などに設定することもできます。デフォルトでは、フレームは false に設定されているため、フレームは表示されませんが、frame パラメーターを使用して true に設定できます。
デフォルトでは、円グラフの中心は 0 ですが、center パラメーターを使用して任意の値に変更できます。rotatelabel
パラメータを使用してラベルをスライスの方向に回転させ、その値を true に設定することもできます。
たとえば、上記の円グラフのようにパラメータを変更してみましょう。以下のコードを参照してください。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3, 0.02, 0.02, 0.02, 0.02]
labels = ["slice 1", "slice 2", "slice 3", "slice 4", "slice 5"]
colors = sns.color_palette("bright")
plt.pie(
data,
labels=labels,
colors=colors,
autopct="%0.0f%%",
explode=explode,
shadow="True",
startangle=90,
textprops={"color": "Green", "fontsize": 16},
wedgeprops={"linewidth": 6},
frame="true",
center=(0.1, 0.1),
rotatelabels="true",
)
plt.show()
出力: