python:実験データをグラフで可視化 -bokehの基本的な使い方2-

Laptop Keyboard Screen WorkIT全般

以前の投稿で、実験データの基本的な可視化を、bokehで行う方法について紹介しました。

今回は、bokehでの作図について、以下のような内容の設定方法についての紹介です。

  • プロットの見た目
  • 軸名や凡例位置の調整
  • エラーバーの設定
  • hover_toolの設定
  • データを抽出しての作図

準備

以前の投稿は、以下を参照してください。

今回は以下のように、パッケージのimportなどを行っています。

from bokeh.plotting import output_notebook,figure,show
from bokeh.models import ColumnDataSource, CDSView, GroupFilter, Range1d,HoverTool,Whisker
output_notebook()

今回用いてるデータは以下のような形です。

プロットの見た目

辞書:plot_settingで設定しているように、プロット点の塗りつぶしや枠線の色や透過度、プロット点のサイズを設定できます。

circle()の中でこれらの引数を与えることで、プロットの見た目を調整できます。

# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')

# 点内部の透過度、点枠線の透過度、点サイズ、点内部色、点枠線色の設定
plot_setting = {'fill_alpha':0.5,'line_alpha':0.5,'size':10,'fill_color':'blue','line_color':'blue'}
# 散布図
p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名',**plot_setting)

show(p)

軸名や凡例位置の調整

# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')
# 散布図
p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名',**plot_setting)

# 凡例位置、x軸名、y軸名、x軸範囲、y軸範囲の設定
p.legend.location = 'top_left'
p.xaxis.axis_label = 'x軸名'
p.yaxis.axis_label = 'y軸名'
p.x_range=Range1d(start=0,end=100)
p.y_range=Range1d(start=0,end=300)

show(p)

エラーバーの設定

エラーバーの上限値と下限値が格納されたデータフレームの列を、Whisker()中のupperとlowerで指定します。

# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')

# エラーバーの設定
p.add_layout(
    Whisker(source=source, base="材料A添加量", upper="引張強度_測定誤差上限", lower="引張強度_測定誤差下限")
)

p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名',**plot_setting)

show(p)

hover_toolの設定

jupyter notebook上で、グラフ上のプロットにマウスを合わせたときに、ポップアップで情報を表示することができます。

# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)
# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')
# HoverToolの設定
hover = HoverTool(tooltips=[('サンプル名',"@sample_name")])
p.add_tools(hover)
# 散布図
p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名',**plot_setting)

show(p)

データを抽出しての作図

# データフレームをbokeh読み込み用に変換
source = ColumnDataSource(csv_df)

# データをFilterで抽出. 
groupA = CDSView(source=source, filters=[GroupFilter(column_name='カテゴリ', group='タイプA')]) # 'カテゴリ'列のうち、'タイプA'のみを抽出
groupB = CDSView(source=source, filters=[GroupFilter(column_name='カテゴリ', group='タイプB'),GroupFilter(column_name='材料A_lot', group='1111')]) # 'カテゴリ'列'タイプB'かつ'材料A_lot'列 '1111'のみを抽出

# グラフサイズおよびタイトルの設定
p = figure(plot_height=500,plot_width=500,title='テストデータの作図')

# 作図
p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名',view=groupA ,color="red")
p.circle(x='材料A添加量',y='引張強度',source=source,legend_label='ラベル名',view=groupB ,color="blue")

show(p)

コメント

タイトルとURLをコピーしました