pandas.Series.plot.area を使って Series データを可視化する
pandas.Series.plot.area を使って Series データを可視化する
pandas.Series.plot.area
は、pandas の Series
オブジェクトを 面積グラフ として可視化する関数です。時間経過におけるデータの変化や、複数のカテゴリ間の比較などに役立ちます。
基本的な使い方
import pandas as pd
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'], '売上': [100, 150, 200]}
df = pd.DataFrame(data)
series = df['売上']
# 面積グラフの作成
series.plot.area()
オプション
pandas.Series.plot.area
には、グラフのカスタマイズに使用できるオプションがいくつか用意されています。
- x: X軸に使用する列を指定します。デフォルトではインデックスが使用されます。
- y: Y軸に使用する列を指定します。デフォルトでは
Series
オブジェクトの値が使用されます。 - stacked: True に設定すると、複数の列を積み重ねて表示します。
- alpha: グラフの透明度を設定します。
- color: グラフの色を設定します。
- title: グラフのタイトルを設定します。
- legend: 凡例を表示するかどうかを設定します。
例
# 複数の列を積み重ねて表示
series.plot.area(stacked=True)
# X軸に日付列を使用
series.plot.area(x='日付')
# 特定の色でグラフを表示
series.plot.area(color='blue')
# タイトルと凡例を設定
series.plot.area(title='売上推移', legend=True)
pandas.Series.plot.area
は、Matplotlib のarea
関数を内部で使用しています。
import pandas as pd
import matplotlib.pyplot as plt
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
df[['売上', '利益']].plot.area()
plt.show()
説明
- このコードは、
売上
と利益
の 2 つの列を含むDataFrame
を作成します。 plot.area()
メソッドを使用して、2 つの列を積み重ねた面積グラフを作成します。plt.show()
を使用して、グラフを画面に表示します。
結果
X軸に日付列を使用する
import pandas as pd
import matplotlib.pyplot as plt
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
df.set_index('日付').plot.area()
plt.show()
- このコードは、
日付
列をDataFrame
のインデックスに設定します。 plot.area()
メソッドを使用して、日付
列を X 軸に、売上
と利益
の列を Y 軸に持つ面積グラフを作成します。
特定の色でグラフを表示
import pandas as pd
import matplotlib.pyplot as plt
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
df[['売上', '利益']].plot.area(color=['red', 'blue'])
plt.show()
- このコードは、
売上
列を赤色、利益
列を青色で表示するようにcolor
オプションを設定します。 - 他の色を使用したい場合は、
color
オプションに好きな色を指定できます。
タイトルと凡例を設定
import pandas as pd
import matplotlib.pyplot as plt
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
df[['売上', '利益']].plot.area(title='業績推移', legend=True)
plt.show()
- このコードは、
title
オプションを使用してグラフのタイトルを "業績推移" に設定します。 legend
オプションを使用して凡例を表示します。
pandas.Series.plot.area の代替方法
Matplotlib の fill_between 関数
- 利点:
- より柔軟なカスタマイズが可能
- 複数のデータセットを重ねてプロットしやすい
- 欠点:
pandas.Series.plot.area
よりもコードが煩雑になる場合がある- pandas との統合が
pandas.Series.plot.area
ほどスムーズではない
import matplotlib.pyplot as plt
import pandas as pd
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
plt.figure(figsize=(10, 6))
plt.fill_between(df['日付'], df['売上'], df['利益'], color='skyblue', alpha=0.7)
plt.xlabel('日付')
plt.ylabel('売上・利益')
plt.title('業績推移')
plt.grid(True)
plt.show()
Seaborn の area 関数
- 利点:
- 見栄えの良いグラフを簡単に作成できる
- pandas との統合が良好
- 欠点:
import seaborn as sns
import pandas as pd
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
sns.area_plot(x='日付', y='売上', data=df, color='skyblue', alpha=0.7)
plt.title('業績推移')
plt.grid(True)
plt.show()
Bokeh の vbar_stack 関数
- 利点:
- 欠点:
from bokeh.plotting import figure, show
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
p = figure(x_range=df['日付'], height=400, title="業績推移")
p.vbar_stack(df.columns, x='日付', source=df, color=['skyblue', 'orange'], alpha=0.7)
p.xaxis.axis_label = '日付'
p.yaxis.axis_label = '売上・利益'
p.grid.grid_line_color = None
show(p)
Plotly の area チャート
- 利点:
- 欠点:
import plotly.express as px
# データの準備
data = {'日付': ['2023-01-01', '2023-02-01', '2023-03-01'],
'売上': [100, 150, 200],
'利益': [50, 75, 100]}
df = pd.DataFrame(data)
# 面積グラフの作成
fig = px.area(df, x='日付', y=['売上', '利益'], color=['skyblue', 'orange'], title='業績推移')
fig