グラフしたい(pandas.DataFrame.plot
)
1import pandas
2import matplotlib.pyplot as plt
3import japanize_matplotlib
4
5fig, axs = plt.subplots()
6data.plot(ax=axs)
7fig.savefig("ファイル名")
pandas.DataFrame.plotを使って、データフレームからグラフを作成できます。 デフォルトで、数値データのみのカラムがすべて折れ線グラフで表示されます。
このメソッドはmatplotlib
のラッパー的なものなので、matplotlib
のインポートが必要です。
また、日本語を表示したい場合はjapanize_matplotlib
をインポートするとよいです。
注釈
検索するとmatplotlib
(matplotlib.pyplot
)を使ってグラフを作成する記事が多くヒットします。
せっかくPandasを使っているので、ここではできるだけPandasを使った方法を試してみようと思います。
種類を変更したい(kind
)
1data.plot(kind="hist")
2data.plot(kind="scatter", x="x軸のカラム名", y="Y軸のカラム名")
kind
オプションでグラフの種類を変更できます。
指定できるグラフの種類はヒストグラム(hist
)、散布図(scatter
)、棒グラフ(bar
)、箱ひげ図(box
)など全11種類あります。
散布図(scatter
)など、一部のグラフ種類ではX軸、Y軸の指定が必要です。
タイトルしたい(title
/ xlabel
/ ylabel
)
1data.plot(
2 title="グラフのタイトル",
3 xlabel="X軸のタイトル",
4 ylabel="Y軸のタイトル",
5 )
title
、xlabel
、ylabel
オプションで、グラフのタイトルや軸タイトルを表示できます。
japanize_matplotlib
をインポートするだけで、日本語フォントを扱えるようになります。
重要
軸タイトルは単位も含めて設定しておくとよいです。
サブプロットしたい(subplots
)
1data.plot(subplots=True)
2
3data.plot(
4 subplots=True,
5 figsize=(横サイズ, 縦サイズ),
6 layout=(行数, 列数),
7 )
subplots=True
オプションで、複数のカラムのデータをそれぞれのサブプロットに表示できます。
figsize
オプションで図の全体サイズを変更できます。横サイズ/縦サイズの単位はinch
です(dpi=72
)。
layout
オプションでサブプロットの行数と列数を変更できます。デフォルトは縦配置です。
サブプロットの詳細はmatplotlib.pyplot.subplotsも参照してください。
目盛りしたい(grid
)
1data.plot(grid=True)
2
3data.plot(
4 grid=True,
5 xticks=range(0, 1000, 50),
6 yticks=range(-5, 15, 1)
7 )
grid=True
オプションで、目盛り(補助目盛り)を表示できます。
xticks
、yticks
オプションで目盛り間隔を変更できます。
目盛りの詳細はmatplotlib.pyplot.gridも参照してください。
表示範囲したい(xlim
/ ylim
)
1data.plot(
2 xlim=(x軸の下限値, x軸の上限値),
3 ylim=(y軸の下限値, y軸の上限値)
4 )
xlim
、ylim
オプションで、X軸とY軸それぞれの下限値と上限値を変更できます。
対数グラフしたい(logx
/ logy
/ loglog
)
1data.plot(logx=True)
2data.plot(logy=True)
3data.plot(loglog=True)
logx=True
、logy=true
、loglog=True
オプションで片対数グラフや両対数グラフに変更できます。
loglog=True
はlogx=True, logy=True
と同等です。
詳細設定したい(ax
)
1import matplotlib.pyplot as plt
2import japanize_matplotlib
3
4# データフレームを用意する(ここでは省略)
5# data: pd.DataFrame
6
7# matplotlib.pyplotで FigureとAxesオブジェクトを作成する
8fig, axs = plt.subplots()
9
10# pandasでプロットを作成する
11data.plot(
12 kind="scatter",
13 x="X軸のカラム名",
14 y="Y軸のカラム名",
15 ax=axs # 描画先のAxesオブジェクトを指定する
16 )
ax
オプションでmatplotlib
のAxes
オブジェクトを指定できます。
グラフをより詳細に設定したい場合は、matplotlib.pyplot.axesに対して変更を加えます。
参考
matplotlib
の使い方は、まず、公式ドキュメントのThe lifecycle of a plotに目を通すのがよいと思います。
とくにA note on the explicit vs implicit interfacesは、ウェブに転がっている他のコードを読むのに役立つ情報だと思います。
その他のグラフ
実際に使う時ができたら追記します。
pandas.DataFrame.plot.bar: 棒グラフ。重みのついたヒストグラムとしても使えるはず。
pandas.DataFrame.plot.barh: 棒グラフ(横)
pandas.DataFrame.plot.box: 箱ひげ図。
pandas.DataFrame.plot.hexbin: マス目が六角形の図。ヒートマップを作るとカッコ良さそう。六角形にするのに見た目以外の意味はあるのだろうか?
pandas.DataFrame.plot.density: ガウシアンを仮定したKDE分布関数
pandas.DataFrame.plot.kde: 上とどう違うんだろう?
pandas.DataFrame.plot.line: 折れ線グラフ