コンテンツにスキップ

第5章 グラフ

1 折れ線グラフ

ここではある会の参加者を示すデータ kdg.csv を使用し、さまざまなグラフを表示してみましょう。kdf.ipynbを開きます。

import pandas as pd

df = pd.read_csv("kdg.csv", index_col = '回')
df

まず、データを折れ線グラフで表示してみましょう。

import seaborn as sns
sns.set_theme(font=["Meiryo"])

df.plot()

まず、seabornをインポートし、snsという別名を付けています。seaborn は matplotlib のグラフ表示をより綺麗に見せることが出来ます。 最初に日本語を表示できるようにsns.set_themeでフォント設定をしています。

そして、df.plot() で全列の折れ線グラフを表示します。

男性のみ表示するには引数yで列名を指定します。

df.plot(y="男性")

男性、女性の両方を表示するにはリストで指定します。

df.plot(y=["男性","女性"])

2 見栄えの設定

タイトルを指定するには matplotlib をインポートし指定します。

import matplotlib.pyplot as plt

df.plot(y="総数")

plt.title("参加人数")

x軸、y軸にラベルを指定します。

plt.xlabel('開催回')
plt.ylabel('人数')

タイトル、ラベルのフォントサイズを指定します。

plt.title("参加人数", fontsize=20)
plt.xlabel('開催回', fontsize=14)
plt.ylabel('人数', fontsize=10)

グラフそのもののサイズを指定するには、figsizeで(横,縦)を指定します。

df.plot(y="総数", figsize=(10,6))

色を変更するには、colorで色コードを指定します。

df.plot(y=["男性","女性"], color=['blue','red'])

3 点と線の描画

点を描画するには、plt.plotでmarkerを指定します。cには色を指定します(rは赤)。

df.plot(y=["男性","女性"])

x = 190
y = 30
plt.plot(x, y, c="r", marker="X", markersize=15)

縦線を描画するには、plt.axvline、横線を描画するには、plt.axhline を指定します。linestyleは線の描画方法です。

# 縦線
plt.axvline(x, c="r", linestyle="--")

# 横線
plt.axhline(y, c="r", linestyle="--")

4 棒グラフ

棒グラフは plot.bar() で指定します。 列の指定は折れ線グラフと同じです。最後の10回のみを棒グラフで表示します。

df2024 = df[df["日付"].dt.year == 2024]
df2024.plot.bar(y=["男性","女性"])

stacked=True で積み上げ棒グラフになります。

df2024.plot.bar(y=["男性","女性"], stacked=True)

水平棒グラフはbarhとします。

df2024.plot.barh(y=["男性","女性"])

5 円グラフ

円グラフは1つの列を割合で表示します。 まず男女の合計人数をDataFrame d に入れます。

s = df[["男性","女性"]].sum() # 合計
d = pd.DataFrame(s, columns=["人数"])
d

これをpie()関数で円グラフを表示します。

d["人数"].plot.pie()

この円グラフは開始位置が90度で、反時計回りです。 startangleとcounterclockを指定し、日本で一般的な上から時計回りの表示にします。

d["人数"].plot.pie(
    startangle=90, 
    counterclock=False
)

割合を表示します。

d["人数"].plot.pie(
    startangle=90, 
    counterclock=False, 
    autopct = "%1.0f%%"
)

フォントを大きくし、色を変更します。

d["人数"].plot.pie(
    startangle=90, 
    counterclock=False, 
    autopct = "%1.0f%%",
    textprops = {"fontsize":"16"}, 
    colors = ["skyblue","#ff8888"]
)