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() 関数トレースの詳細については、このリンクを確認してください。

著者: 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