※ 当サイトは、アフィリエイト広告を利用しています

【plotly】実例多数!エラーバーの設定 -error_x/error_y-

実験結果をまとめるときなど多くの場合で,エラーバー付きのグラフとしたいことがあります。
今回は,グラフ作成後も軸の拡大縮小が可能なplotlyについて,エラーバーの設定を行いたいと思います。

今回の記事では,以下の2つのことができることを目指します。

この記事の目標

エラーバーの表示
エラーバーの色,線の太さの設定

目標とするグラフは↓です。

スマホなどでは,上図は画像です。plotlyによる操作感を試したい方はPCからアクセスください。

*このグラフのコードは,最後のまとめにあります。一括でコピペしたい場合は,そちらを参考にしてください。

目次

ライブラリ,ワインデータの読み込み

ライブラリには,sklearn, pandas, plotly.graph_objectsを読み込んでいますが,実際にグラフ作成に必要なのはplotly.graph_objectsです。

データには,scikit-learnのワインのデータセットを使いました。
公式サイトの解説はこちらです。

#ライブラリのインポート
from sklearn import datasets
import pandas as pd
import plotly.graph_objects as go
#ワインデータの読み込み
data =  datasets.load_wine()
X=data['data']
Y=data['target']
wine_X = pd.DataFrame(X, columns=data['feature_names'])
df_wine = wine_X.copy()
df_wine['target']=Y
df_wine

df_wineは下記の画像のようになっています。

df_wineの列は,14種類の要素から成っており,ここから”alcohol”のデータを使います。

データの作成

まず,“alcohol“からランダムに数値を5点抜き取ります。
抜き取った5点の平均値をプロットし,そのばらつき(不偏標準偏差)をエラーバーとしようと思います。

5点の抜き取り作業を6回繰り返し,その結果でグラフを作ります。

今回,ランダムに5点,計6回抜き取った結果は↓のようになります。
数値の右側の”13.74”が“alcohol“の値です。

この結果を得るためのコードはこちら↓になります。
このコードを実行すると,先ほどのランダムに5点,計6回抜き取った結果を表示してくれます。

x_list=[]
mean_list=[]
std_list=[]
for i in range(6):
  print('--',i+1,'回目--')
  random_list=df_wine['alcohol'].sample(n=5, random_state=i)
  print(random_list)
  x_list.append(i+1)
  mean_list.append(random_list.mean())
  std_list.append(random_list.std())

x_list,mean_list,std_listのリストには

  • x_list:抜き出した回数
  • mean_list:平均値
  • std_list:不偏標準偏差

を入れます。
「alcohol」からランダムに5点抜き取るため,

df_wine[‘alcohol’].sample(n=5, random_state=i)

を使っています(6行目)。

参考までに,x_list,mean_list,std_listの中身は以下のようになっています。

print(x_list)
#↓x_listの中身
#[1, 2, 3, 4, 5, 6]
print(mean_list)
#↓mean_listの中身
#[13.102, 13.146, 13.315999999999999, 13.185999999999998, 13.558000000000002, 13.733999999999998]
print(std_list)
#↓std_listの中身
# [0.5596159397300979, 0.7636294913110674, 0.3609432088293115, 0.8882736064974578, 0.7352006528832793, 0.46933996207440065]

グラフの作成

上述で作成したx_list,mean_listを使い,まずは散布図を作成します。

このグラフとコードを基に,次の章からエラーバーを追加を行いたいと思います。

グラフを作成したコードは↓になります。

fig = go.Figure()
fig.add_trace(go.Scatter(x=x_list,
                         y= mean_list,
                         marker=dict(color='blue', size=6),
                         line=dict(color='blue', width=0.5,dash='solid')
                         ))


# 軸ラベル, 背景
fig.update_layout(plot_bgcolor="white")
fig.update_xaxes(title=dict(text='sample size'), 
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.update_yaxes(title=dict(text='alcohol'), range=(6,16),
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')

fig.show()

散布図の書き方については以下の記事でまとめていますので、参考にしてください。

エラーバー付きのグラフの表示

それでは本題です。先ほどの散布図にエラーバーを追加します。
plotly公式HPも併せてご確認ください。

エラーバーを表示することで,実験などのデータのばらつき加減を可視化することができます。
今回のエラーバーのデータは最初に作成したstd_listです。

先ほどのコードに6〜11行目を追記しています。

fig = go.Figure()
fig.add_trace(go.Scatter(x=x_list,
                         y= mean_list,
                         marker=dict(color='blue', size=6),
                         line=dict(color='blue', width=0.5,dash='solid'),
                         error_y=dict(type='data',
                                      array=std_list,
                                      color='black',
                                      thickness=1,
                                      visible=True,
                                      width=3)
                         ))


# 軸ラベル, 背景
fig.update_layout(plot_bgcolor="white")
fig.update_xaxes(title=dict(text='sample size'), 
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.update_yaxes(title=dict(text='alcohol'), range=(6,16),
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.show()

fig.add_trace(go.Scatter())内のerror_yにてエラーバーの設定を行います。

今回は実施しませんが,error_yerror_xとすればx軸方向のエラーバーを表示できます。
error_yの中身は下表を参考にしてください。

エラーバーの設定
fig.add_trace(go.Scatter(…,
                         error_y=dict(type= <VALUE>,
                                      array= <VALUE>,
                                      color= <VALUE>,
                                      thickness= <VALUE>,
                                      visible= <VALUE>,
                                      width= <VALUE>,
                         ))
error_y=dict(…)type= ○○○‘data’,‘percent’,‘constant’などから選択。
‘data’では下記の‘array’のデータがエラーバーとなる
array= ○○○エラーバーのデータ
color= ○○○エラーバーの色
thickness= ○○○エラーバーの線の太さ
visible= ○○○‘True’でエラーバーを表示する
width= ○○○エラーバーのキャップの幅

以上で,エラーバーの表示を行うことができます。

エラーバーの色,太さ

ここからは,前述のコードを一部変更してエラーバーの色や太さを変更したグラフを見ていきたいと思います。

色の変更

エラーバーの色を変更します。

エラーバーの設定にてcolor=’black’としていたところを,color=’blue’とし青色とすると↓のようになります。

線の太さの変更

 width=3width=8と変更すると,エラーバーのキャップ部の線を強調することができます。

逆に,width=0とすればキャップ部をなくし線としてエラーバーを表現することができます。

ご自身の使用場面に応じて,上記の設定をご活用ください。

いろいろなグラフへの設定

さらにここからは,いろいろなエラーバーの表示設定を確認したいと思います。

x方向y方向へのエラー表示設定

まず,x方向とy方向の両方のエラーバーを表示してみます。

データは乱数で新たに作成し直しました。

上記のグラフのコードは↓になります。

import random
import plotly.graph_objects as go

random.seed(314)

X_list=[i for i in range(0, 20,2)]
Y_list=[random.randrange(2, 20, 2) for i in range(10)]

std_listY=[random.uniform(1,3) for i in range(10)]
std_listX=[random.uniform(0,2) for i in range(10)]

fig = go.Figure()
fig.add_trace(go.Scatter(x=X_list,
                         y= Y_list,
                         marker=dict(color='blue', size=6),
                         line=dict(color='blue', width=0.5,dash='solid'),
                         error_y=dict(type='data',
                                      array=std_listY,
                                      color='black',
                                      thickness=1,
                                      visible=True,
                                      width=3),
                         error_x=dict(type='data',
                                      array=std_listX,
                                      color='black',
                                      thickness=1,
                                      visible=True,
                                      width=3)
                         ))


# 軸ラベル, 背景
fig.update_layout(plot_bgcolor="white")
fig.update_xaxes(title=dict(text='X-data'),
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.update_yaxes(title=dict(text='Y-data'),
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.show()

x方向のエラーバーの設定は17-22行目,y方向のエラーバーの設定は23-28行目です。
また,x,yのデータは6,7行目で設定し,エラーバーのデータは9,10行目で設定しています。

yのデータは,2以上20以下の範囲でかつ,2刻みのステップの数値の中でランダムに値を10個の取得し,リストとして作成しています。
設定している項目は以下を参考にしてください。

a以上b以下でc刻みの中からd個の乱数を持つリストの設定
std_listX = [random.randrange(a,b,c) for i in range(d)]
random.uniform(ab, c)a以上b以下でc刻みの中から乱数をつくる
[random.uniform(ab, c) for i in range(d)]a以上b以下でc刻みの中からd個の乱数を持つリストを作成

エラーバーのデータの設定する項目は以下の通りです。

a以上b以下の乱数をc個持つリストの設定
std_listX = [random.uniform(a,b) for i in range(c)]
random.uniform(ab)a以上b以下の浮動小数点の乱数をつくる
[random.iniform(ab) for i in range(c)]a以上b以下の浮動小数点を乱数をc個持つリストを作成

棒グラフのエラーバーの設定

次は,棒グラフへのエラーバーの表示設定を行います。

上記のグラフのコードは↓になります。

random.seed(1)

Y_list=[random.randrange(2, 20, 2) for i in range(10)]
std_list=[random.uniform(1,3) for i in range(10)]


fig = go.Figure()
fig.add_trace(go.Bar(y= Y_list,
                     textposition='auto',
                     width=0.4,
                     marker=dict(color='blue'),
                     error_y=dict(type='data',
                                      array=std_list,
                                      color='black',
                                      thickness=1.5,
                                      visible=True,
                                      width=3),

                     ))


# 軸ラベル, 背景
fig.update_layout(plot_bgcolor="white")
fig.update_xaxes(linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.update_yaxes(title=dict(text='Y-data'),
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.show()

棒グラフへの設定については,以下の記事をご確認ください。

まとめ

エラーバーの設定の方法をみてきました。

エラーバーを表示するためには,fig.add_trace(go.Scatter())内にerror_yerror_xを設定します。

error_yの設定項目としては以下の通りです。

エラーバーの設定
fig.add_trace(go.Scatter(…,
                         error_y=dict(type= <VALUE>,
                                      array= <VALUE>,
                                      color= <VALUE>,
                                      thickness= <VALUE>,
                                      visible= <VALUE>,
                                      width= <VALUE>,
                         ))
error_y=dict(…)type= ○○○‘data’,‘percent’,‘constant’などから選択。
‘data’では下記の‘array’のデータがエラーバーとなる
array= ○○○エラーバーのデータ
color= ○○○エラーバーの色
thickness= ○○○エラーバーの線の太さ
visible= ○○○‘True’でエラーバーを表示する
width= ○○○エラーバーのキャップの幅
冒頭のグラフのコードはこちら
#ライブラリのインポート
from sklearn import datasets
import pandas as pd
import plotly.graph_objects as go

#ワインデータの読み込み
data =  datasets.load_wine()
X=data['data']
Y=data['target']
wine_X = pd.DataFrame(X, columns=data['feature_names'])
df_wine = wine_X.copy()
df_wine['target']=Y
df_wine


x_list=[]
mean_list=[]
std_list=[]
for i in range(6):
#  print('--',i+1,'回目--')
  random_list=df_wine['alcohol'].sample(n=5, random_state=i)
  print(random_list)
  x_list.append(i+1)
  mean_list.append(random_list.mean())
  std_list.append(random_list.std())
#print(mean_list)
#print(std_list)

fig = go.Figure()
fig.add_trace(go.Scatter(x=x_list,
                         y= mean_list,
                         marker=dict(color='blue', size=6),
                         line=dict(color='blue', width=0.5,dash='solid'),
                         error_y=dict(type='data',
                                      array=std_list,
                                      color='black',
                                      thickness=1,
                                      visible=True,
                                      width=3)
                         ))


# 軸ラベル, 背景
fig.update_layout(plot_bgcolor="white")
fig.update_xaxes(title=dict(text='sample size'), 
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.update_yaxes(title=dict(text='alcohol'), range=(6,16),
                 linecolor='black', mirror=True, gridcolor='gray', griddash='dot')
fig.show()

実験データなど値のばらつきがある場合については,エラーバーの表記は必須となります。
本記事によって,plotlyによるエラーバー付きのグラフが作成できるようになれば幸いです!

以上,【plotly】実例多数!エラーバーの設定 -error_x/error_y- でした!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次