Plotly バブルチャート

Ammar Ali 2022年4月1日
Plotly バブルチャート

このチュートリアルでは、Plotly の scatter() 関数を使用してバブルチャートを作成する方法について説明します。

Python でプロットバブルチャート

散布図は、バブルチャートとも呼ばれ、データポイントを円またはバブルとしてグラフに表示します。plotly.expressscatter() 関数を使用して、バブルまたは散布図を作成できます。

散布図またはバブルチャートを作成するには、scatter() 関数内で x 軸と y 軸の値を渡す必要があります。軸の値が 1つだけ指定されている場合、関数は値のインデックスを 2 番目の軸の値として使用します。

たとえば、ランダムなデータを使用してバブルチャートを作成しましょう。以下のコードを参照してください。

import plotly.express as px

values = [2,5,7,8,3,6]
fig = px.scatter(y=values, width=500, height=400)
fig.show()

出力:

スキャッターを使用したバブルチャート

width および height 引数は、上の図の幅と高さをピクセル単位で設定するために使用されます。データフレームを使用してバブルチャートを作成することもできます。

データフレームの場合、data_frame 引数を使用して、scatter() 関数内にデータを渡すことができます。color 引数を使用して、各バブルにランダムな色を付けることができます。

scatter() 関数は、カラーシーケンスを使用して各バブルの色を設定します。size 引数を使用して各バブルのサイズを設定し、その値を整数のリストに設定できます。hover_name 引数を使用して各バブルのホバータイトルを設定し、その値を文字列のリストに設定できます。

text 引数を使用して各バブル内にテキストを追加し、その値を文字列のリストに設定することもできます。facet_col 引数を使用して各バブルを異なるプロットに分割し、各バブルを異なるプロットに配置できます。

orientation 引数を使用してプロットの方向を設定し、その値を水平方向の場合は h に、垂直方向の場合は v に設定できます。たとえば、上記のプロパティを変更してみましょう。以下のコードを参照してください。

import plotly.express as px

values = [3,4,5]
labels = ['a','b','c']
fig = px.scatter(y=values, x=labels, width=500, height=400, color=labels, size=[5,10,15], hover_name=['B1','B2','B3'], text=['1','2','3'],facet_col=labels)
fig.show()

出力:

バブルチャートのプロパティの変更 1

x 軸エラーに error_x を使用し、y 軸エラーに error_y を使用して、各バブルにエラーバーを追加することもできます。

color_discrete_sequence を使用してデフォルトのカラーシーケンスを変更し、plotly.express.color.qualitative 属性を使用してその値を Dark24Light24 のような Plotly でサポートされるカラーシーケンスに設定できます。たとえば、上記のバブルチャートのカラーシーケンスを変更してみましょう。

以下のコードを参照してください。

import plotly.express as px

values = [3,4,5]
labels = ['a','b','c']
fig = px.scatter(y=values, x=labels, width=500, height=400, color=labels, size=[5,10,15], hover_name=['B1','B2','B3'], text=['1','2','3'], error_y=[1,2,1],color_discrete_sequence=px.colors.qualitative.Dark24)
fig.show()

出力:

バブルチャートのカラーシーケンスの変更

カラーシーケンスを変更するには、上記のコードのカラーシーケンス名を Dark24 から Light24 のように変更する必要があります。各バブルにカラーシーケンスではなくカラーを指定する場合は、color_discrete_map 引数を使用してカラーシーケンスをオーバーライドできます。

Plotly カラーの詳細については、このリンクを確認してください。たとえば、上のプロットにある最初の 2つの泡の色を変更してみましょう。

以下のコードを参照してください。

import plotly.express as px

values = [3,4,5]
labels = ['a','b','c']
fig = px.scatter(y=values, x=labels, width=500, height=400, color=labels, size=[5,10,15], hover_name=['B1','B2','B3'], text=['1','2','3'], error_y=[1,2,1],color_discrete_map={'a':'red','b':'green'})
fig.show()

出力:

泡の色を変える

最初の 2 色のみを変更し、残りの色はデフォルトのカラーシーケンスから変更されます。opacity 引数を使用してバブルの不透明度を設定し、その値を 0 から 1 に設定できます。

log_x および log_y 引数を使用し、その値を true に設定して、軸を対数スケールに変更することもできます。title 引数を使用して、図のタイトルを設定できます。

marginal_xmarginal_y を使用して、バブルグラフの上に分布グラフを描画し、ポイントの分布を表示できます。たとえば、上記のプロパティを変更してみましょう。

以下のコードを参照してください。

import plotly.express as px

values = [3,4,5]
labels = ['a','b','c']
fig = px.scatter(y=values, x=labels, width=500, height=400, color=labels, size=[5,10,15], hover_name=['B1','B2','B3'], text=['1','2','3'], error_y=[1,2,1],color_discrete_map={'a':'red','b':'green'}, title='Bubble Chart', opacity=0.7, marginal_x="histogram")
fig.show()

出力:

バブルチャート 2 のプロパティの変更

fig.update_traces() 関数を使用して scatter() 関数トレースを使用して、バブルチャートの他の多くのプロパティを変更することもできます。showlegend 引数を使用してその値を false に設定すると、凡例を非表示にできます。

エラーバーの色を変更できます。これは、デフォルトでは、error_y_color 引数を使用してバブルの色と同じです。error_y_thickness 引数を使用して、エラーバーの線幅を変更できます。

たとえば、上記のトレースを変更してみましょう。以下のコードを参照してください。

import plotly.express as px

values = [3,4,5]
labels = ['a','b','c']
fig = px.scatter(y=values, x=labels, width=500, height=400, color=labels, size=[5,10,15], hover_name=['B1','B2','B3'], text=['1','2','3'], error_y=[1,2,1],color_discrete_map={'a':'red','b':'green'}, title='Bubble Chart', opacity=0.7, marginal_x="histogram")
fig.update_traces(showlegend=False, error_y_color='red',error_y_thickness=5)
fig.show()

出力:

バブルチャートのトレースの変更

scatter() 関数トレースの詳細については、このリンクを確認してください。

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook