前回の記事で、csvやエクセルデータの加工方法をまとめました。
集計後にはグラフ化して可視化することが必要になります。
pythonでのグラフの作図には、matplotlib, seabornなどがありますが、今回はbokehというパッケージを使用した作図方法を紹介します。
今回は、実験データで使用することの多いであろう、散布図、折れ線グラフ、棒グラフの3つの作成方法についてまとめました。
なお、作図についての詳細な設定は以下の記事を参照ください。
準備
実行環境の構築は以下のリンクを参照ください。
importおよびファイルの読み込みは以下のように行いました。
import pandas as pd
from bokeh.plotting import output_notebook,figure,show
from bokeh.models import ColumnDataSource, CDSView, GroupFilter
output_notebook() # jupyter中にbokehの結果を表示するのに必要
# csvファイルの読み込んでデータフレーム化
csv_df = pd.read_csv('exp_data.csv')
# 読込んだファイルを表示
csv_df.head()

散布図
pandasのデータフレームを一度bokeh用のデータにColumnsDataSourceで変換しています。
変換せずとも作図できる方法はありますが、後々便利なのでこの方法を今回は紹介しています。
# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')
# 散布図
p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名')
show(p)

折れ線グラフ
散布図のcircleをlineにすることで折れ線グラフにすることが可能です。
# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')
# 折れ線グラフ
p.line(x='材料B添加量',y='引張強度',source=source,legend_label='ラベル名')
show(p)

散布図+折れ線グラフ
若干面倒ですが、散布図と折れ線グラフを組み合わせて、線付きプロットを作図できます。
(他にもいい方法があるかも?)
# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')
# 散布図及び折れ線グラフ
p.circle(x='材料B添加量',y='引張強度',source=source,legend_label='ラベル名')
p.line(x='材料B添加量',y='引張強度',source=source,legend_label='ラベル名')
show(p)

棒グラフ
figure(x_range=)で横軸の値を指定しておかないと、vbarでxの値を指定するだけでは作図されないようです。
# データフレームをbokeh読み込み用に変換
var_df = csv_df.iloc[:5,:]
source = ColumnDataSource(var_df)
# グラフサイズおよびタイトルの設定
p = figure(x_range= var_df['sample_name'].unique(),plot_height=500,plot_width=1000,title='テストデータの作図')
p.vbar(x='sample_name', top='引張強度',source=source,width=0.5)
show(p)

コメント