Python

基礎編: PythonとPlotlyを使ったデータの可視化

2023年5月25日

PythonでPlotlyを使ったグラフ描画

Pythonの優れたデータ可視化ライブラリのPlotlyを使ってみませんか?
Plotlyは美しいグラフやプロットで、視覚的に理解しやすくなるので
プロフェッショナルなデータサイエンティストから初心者まで、
幅広いユーザーに利用されています。

この記事はPlotlyの基本的な使い方を詳細に解説していきます。
まずはPython Plotlyとは何か、その特徴と利点についてご紹介します。
インタラクティブな要素を持つグラフを作成する方法やプロットのカスタマイズ方法まで、
基本的な手法を一緒に学んでいきましょう。

①Plotlyについての基本知識

Plotly基礎知識

Plotlyについての基本知識を以下の内容で解説します。

Plotlyについての基本知識

  • Plotlyとは何か?
  • Plotlyの特徴と利点

Plotlyとは何か?

Python Plotly(パイソン プロットリー)は、Pythonのデータ可視化ライブラリの1つです。データを視覚的に表現するためのグラフやチャートを作成することができます。

Plotlyはインタラクティブな可視化を提供し、
Web上での共有やダッシュボードの作成にも適しています。

Plotlyの特徴と利点

Python Plotlyの特徴と利点は以下の通りです。

インタラクティブな可視化:
グラフやチャートはマウスの操作でズームやパン、ツールチップ表示などが可能で、データの詳細な観察や相互作用が容易です。

多様なグラフタイプ:
Python Plotlyは折れ線グラフ、散布図、バーチャート、ヒートマップなど、
さまざまなグラフタイプをサポートしています。

カスタマイズ性:
グラフのスタイルやレイアウトを柔軟にカスタマイズすることができ、
視覚的な表現を自由に調整できます。

オンライン共有とコラボレーション:
Python Plotlyのグラフはオンラインで共有でき、
他のユーザーとのコラボレーションも容易です。

Pythonとの統合:
PlotlyはPythonとシームレスに統合されており、
Pythonのデータ処理や解析のワークフローにスムーズに組み込むことができます。

②Plotlyの基本的な使い方

Plotlyの基本的な使用方法

Plotlyの基本的な使い方

  • Plotlyのインストール方法
  • 折れ線グラフを描画する方法
  • 散布図を描画する方法
  • 棒グラフを描画する方法
  • ヒストグラムを描画する方法
  • 円グラフを描画する方法
  • 3Dグラフを描画する方法

Plotlyのインストール方法

Python Plotlyをインストールするには、以下のコマンドを使用します。

pip install plotly

インストール後、Pythonのスクリプト内でimport plotlyと記述することで、
Plotlyを使用する準備が整います。

折れ線グラフを描画する方法

折れ線グラフの作成

Plotlyを使用してデータの準備と基本的なプロットを作成する手順を説明します。

import plotly.graph_objects as go

# データの準備
x_data = [1, 2, 3, 4, 5]
y_data = [10, 15, 7, 12, 9]

# プロットの作成
trace = go.Scatter(
    x=x_data,
    y=y_data
)

# レイアウトの設定
layout = go.Layout(
    title="折れ線グラフ",
    xaxis=dict(title="X軸"),
    yaxis=dict(title="Y軸")
)

# 図全体の定義
fig = go.Figure(data=trace, layout=layout)

# グラフの表示
fig.show()

plotly.graph_objectsモジュールをgoとしてインポートします。
このモジュールは、Plotlyのグラフオブジェクトを作成するために使用します。

データとしてx_datay_dataという2つのリストを作成してx軸とy軸のデータを用意します。

次に、go.Scatterオブジェクトを使用してプロットを作成します。
このオブジェクトは、折れ線グラフを作成するために使用されます。
x引数にx軸のデータ、y引数にy軸のデータを指定します。

go.Layoutオブジェクトを使用してタイトルや軸ラベルを指定します。ここでは、グラフのタイトルを『折れ線グラフ』とし、x軸のラベルを『X軸』とし、y軸のラベルを『Y軸』とします。

go.Figureオブジェクトを使用して、図全体を定義します。data引数には先ほど作成したプロットのトレースオブジェクトを指定し、layout引数にはレイアウトオブジェクトを指定します。

最後に、fig.show()を呼び出すことで、作成したグラフを表示します。
実行すると、別のウィンドウにグラフが表示されます。

複数のグラフを同じプロットに表示する方法

複数のグラフを同じプロットに表示するためには
go.Figureに複数のトレース(Trace)を追加します。
以下のプログラムでは、2つの折れ線グラフを同じプロットに表示する方法を示しています。

import plotly.graph_objects as go

# データの準備
x_data = [1, 2, 3, 4, 5]
y1_data = [10, 15, 7, 12, 9]
y2_data = [5, 8, 3, 10, 6]

# プロットの作成
trace1 = go.Scatter(
    x=x_data,
    y=y1_data,
    name="グラフ1"
)

trace2 = go.Scatter(
    x=x_data,
    y=y2_data,
    name="グラフ2"
)

# レイアウトの設定
layout = go.Layout(
    title="複数の折れ線グラフ",
    xaxis=dict(title="X軸"),
    yaxis=dict(title="Y軸")
)

# 図全体の定義
fig = go.Figure(data=[trace1, trace2], layout=layout)

# グラフの表示
fig.show()

このプログラムではgo.Scatterを2回使用して2つのトレースを作成し、
それぞれのデータをxとyに設定しています。

name引数を使用して各グラフに名前を付けて区別することもできます。

最後に、go.Figuredata引数に複数のトレースをリスト形式で指定してプロットを作成します。

線の色を変更する方法

線の色を変更するにはgo.Scatterline属性をカスタマイズします。
以下のプログラムでは、折れ線の色を赤に変更する方法を示しています。

import plotly.graph_objects as go

# データの準備
x_data = [1, 2, 3, 4, 5]
y_data = [10, 15, 7, 12, 9]

# プロットの作成
trace = go.Scatter(
    x=x_data,
    y=y_data,
    line=dict(color='red')  # 線の色を赤に設定
)

# レイアウトの設定
layout = go.Layout(
    title="折れ線グラフ",
    xaxis=dict(title="X軸"),
    yaxis=dict(title="Y軸")
)

# 図全体の定義
fig = go.Figure(data=trace, layout=layout)

# グラフの表示
fig.show()

このプログラムではgo.Scatterline属性にdict(color='red')として赤色を指定しています。
必要に応じて他の色名やRGB値を指定してください。

線の種類を変更する方法

線の種類を変更するにはgo.Scatterline属性のdashパラメータを使用します。
以下のプログラムでは、折れ線の線種を点線に変更する方法を示しています。

import plotly.graph_objects as go

# データの準備
x_data = [1, 2, 3, 4, 5]
y_data = [10, 15, 7, 12, 9]

# プロットの作成
trace = go.Scatter(
    x=x_data,
    y=y_data,
    line=dict(dash='dash')  # 線種を点線に設定
)

# レイアウトの設定
layout = go.Layout(
    title="折れ線グラフ",
    xaxis=dict(title="X軸"),
    yaxis=dict(title="Y軸")
)

# 図全体の定義
fig = go.Figure(data=trace, layout=layout)

# グラフの表示
fig.show()

このプログラムではgo.Scatterline属性にdict(dash='dash')として
dashパラメータに'dash'を指定しています。

これにより、線種が点線に変更されます。
他の線種としては'solid'(実線)、'dot'(点線)、'dashdot'(一点鎖線)、
'dashdotdot'(二点鎖線)などがあります。
必要に応じてこれらの値を使用して線種を変更することができます。

散布図を描画する方法

散布図の作成

以下のコードは、散布図を作成するためのプログラムです。

import plotly.graph_objects as go
import numpy as np

# データの準備
N = 100  # データ数
x_data = np.random.randn(N)  # X軸のランダムなデータ(正規分布に従う)
y_data = 2 * x_data + np.random.randn(N)  # Y軸のデータ(Xに2を乗じた後、ノイズを加える)
# 散布図の作成
fig = go.Figure(data=go.Scatter(x=x_data, y=y_data, mode='markers'))

# レイアウトのカスタマイズ
fig.update_layout(
    title="散布図",
    xaxis_title="X軸",
    yaxis_title="Y軸"
)

# グラフの表示
fig.show()

Nをデータ数として設定してnumpyrandom.randn関数を使って
X軸のランダムなデータを生成します。

また、Y軸のデータはXに2を乗じた後、さらにランダムなノイズを加えて作成します。

go.Scatterを使用して散布図を作成します。
X軸データ、Y軸データを指定し、mode'markers'を指定して散布図モードに設定します。
go.Figureを使って図全体を定義し、dataに作成した散布図を指定します。

色やマーカーの種類を変更する方法

以下は色やマーカーのカスタマイズを行ったプログラムです。

import plotly.graph_objects as go
import numpy as np

# データの準備
N = 100  # データ数
x_data = np.random.randn(N)  # X軸のランダムなデータ(正規分布に従う)
y_data = 2 * x_data + np.random.randn(N)  # Y軸のデータ(Xに2を乗じた後、ノイズを加える)

# 散布図の作成
fig = go.Figure(data=go.Scatter(x=x_data, y=y_data, mode='markers'))

# レイアウトのカスタマイズ
fig.update_layout(
    title="散布図",
    xaxis_title="X軸",
    yaxis_title="Y軸"
)

# 色やマーカーのカスタマイズ
fig.update_traces(
    marker=dict(
        color='red',  # マーカーの色を赤に設定
        symbol='star',  # マーカーの形状を星に設定
        size=8  # マーカーのサイズを8に設定
    )
)

# グラフの表示
fig.show()

上記のコードではupdate_tracesメソッドを使用して
散布図のトレース(データポイント)に対してカスタマイズを行っています。

markerオブジェクト内で以下のプロパティを指定することができます。

color:
マーカーの色を指定します。例えば、'red''blue'といった色名、'#FF0000'のような16進数のカラーコードなどが利用できます。

symbol:
マーカーの形状を指定します。
例えば、'circle''square''diamond''cross'などが利用できます。
詳細な形状の一覧はPlotlyの公式ドキュメントを参照してください。

size:
マーカーのサイズを指定します。整数値で指定します。

例えば、マーカーの色を赤に、形状を星に、サイズを8に設定する場合、
上記のコードを追加してください。
これにより、散布図のデータポイントの色やマーカーが変更されます。適宜、色や形状、サイズを変更して、好みの表示にカスタマイズしてください。

棒グラフを描画する方法

棒グラフの作成

棒グラフを描画するためにはPlotlyのgo.Barオブジェクトを使用します。
以下は棒グラフを作成するコード例です。

import plotly.graph_objects as go

# データの準備
x_data = ['A', 'B', 'C', 'D', 'E']
y_data = [10, 15, 7, 12, 9]

# 棒グラフの作成
bar = go.Bar(
    x=x_data,
    y=y_data
)

# レイアウトの設定
layout = go.Layout(
    title="棒グラフ",
    xaxis=dict(title="X軸"),
    yaxis=dict(title="Y軸")
)

# 図全体の定義
fig = go.Figure(data=bar, layout=layout)

# グラフの表示
fig.show()

go.Barオブジェクトを作成しxyにそれぞれX軸とY軸のデータを指定します。

最後にgo.Figureオブジェクトに棒グラフのデータを追加し、fig.show()でグラフを表示します。

色や幅を変更する方法

棒グラフの色や幅を変更する方法はmarkerパラメータやwidthパラメータを使用して行います。以下に具体的なコード例を示します。

import plotly.graph_objects as go

# データの準備
x_data = ['A', 'B', 'C', 'D', 'E']
y_data = [10, 15, 7, 12, 9]

# 棒グラフの作成
bar = go.Bar(
    x=x_data,
    y=y_data,
    marker=dict(
        color='green',  # 色を赤に設定
        line=dict(
            color='black',  # 枠線の色を黒に設定
            width=2  # 枠線の幅を2に設定
        )
    ),
    width=0.5  # 棒の幅を0.5に設定
)

# レイアウトの設定
layout = go.Layout(
    title='棒グラフのタイトル',
    xaxis=dict(title='X軸ラベル'),
    yaxis=dict(title='Y軸ラベル')
)

# 図全体の定義
fig = go.Figure(data=bar, layout=layout)

# グラフの表示
fig.show()

上記の例ではmarkerパラメータにcolorlineを設定しています。colorでは棒の色を指定し、lineでは枠線の色と幅を指定しています。

widthパラメータで棒の幅を調整しています。
値は0から1の範囲で指定し、1に近づくほど太い棒になります。

0が黒色で描画されます。
お好みの色や幅に変更してみてください。

ヒストグラムを描画する方法

ヒストグラムの作成

ヒストグラムを描画するためにはPlotlyのgo.Histogramオブジェクトを使用します。
以下はヒストグラムを作成するためのコード例です。

import plotly.graph_objects as go
import numpy as np

# データの準備
data = np.random.randn(100)

# ヒストグラムの作成
histogram = go.Histogram(
    x=data,
    nbinsx=15
)

# レイアウトの設定
layout = go.Layout(
    title="ヒストグラム",
    xaxis=dict(title="X軸"),
    yaxis=dict(title="Y軸")
)

# 図全体の定義
fig = go.Figure(data=histogram, layout=layout)

# グラフの表示
fig.show()

ヒストグラムのデータを準備するためにnumpyをインポートし、
ランダムな値の配列を生成しています。

go.Figureオブジェクトにヒストグラムのデータとレイアウトを追加しています。

円グラフを描画する方法

円グラフの作成

円グラフを描画するにはPlotlyのgo.Pieオブジェクトを使用します。
以下は円グラフを作成するためのコード例です。

import plotly.graph_objects as go

# データの準備
labels = ['A', 'B', 'C', 'D']
values = [30, 20, 40, 10]

# 円グラフの作成
pie = go.Pie(
    labels=labels,
    values=values
)

# 図全体の定義
fig = go.Figure(data=pie)

# グラフの表示
fig.show()

上記のコードではlabelsに円グラフの各セクションのラベルをリスト形式で指定し、
valuesには各セクションの値をリスト形式で指定します。
go.Pieオブジェクトを作成し、labelsvaluesを対応させます。

最後にgo.Figureオブジェクトに円グラフのデータを追加し、
fig.show()でグラフを表示します。

ラベルの色を変更する方法

円グラフでラベルの色を変更するにはmarkerオブジェクト内のcolorsパラメータを使用します。以下は円グラフでラベルの色を変更する例です。

import plotly.graph_objects as go

# データの準備
labels = ['A', 'B', 'C', 'D']
values = [30, 20, 15, 35]
colors = ['blue', 'green', 'red', 'orange']

# 円グラフの作成
pie = go.Pie(
    labels=labels,
    values=values,
    marker=dict(colors=colors)
)

# レイアウトの設定
layout = go.Layout(
    title='円グラフ'
)

# 図全体の定義
fig = go.Figure(data=[pie], layout=layout)

# グラフの表示
fig.show()

上記のコードではlabelsには各項目のラベルを、valuesには各項目の値をリストとして
指定します。
また、colorsリストには各ラベルの色を指定すれば変更できます。

ラベルの色を変更するために、colorsリストに任意の色名を指定してください。

3Dグラフを描画する方法

3Dグラフの作成

以下は3D散布図の作成例です。

import plotly.graph_objects as go
import numpy as np

# データの準備
np.random.seed(0)
x_data = np.random.randn(100)
y_data = np.random.randn(100)
z_data = np.random.randn(100)

# 3D散布図の作成
scatter3d = go.Scatter3d(
    x=x_data,
    y=y_data,
    z=z_data,
    mode='markers',
    marker=dict(
        size=5,
        color=z_data,
        colorscale='Viridis',
        opacity=0.8
    )
)

# レイアウトの設定
layout = go.Layout(
    scene=dict(
        xaxis=dict(title='X軸'),
        yaxis=dict(title='Y軸'),
        zaxis=dict(title='Z軸')
    ),
    title='3D散布図'
)

# 図全体の定義
fig = go.Figure(data=[scatter3d], layout=layout)

# グラフの表示
fig.show()

上記のコードではx_datay_dataz_dataには3D散布図の各軸のデータリスト
またはNumPy配列として指定します。

go.Scatter3dオブジェクトを作成してxyzに対応するデータを指定します。

modeは'markers'として設定し、各データポイントを点として表示します。

レイアウトにはgo.Layoutオブジェクトを使用して、軸のタイトルを設定します。
scene内のxaxisyaxiszaxisで各軸の設定を指定します。

最後に、go.Figureオブジェクトに3D散布図のデータとレイアウトを追加し、
fig.show()でグラフを表示します。

今回はPlotlyの基本的な使いかたについて解説しました。

応用編の記事も書いたので是非チェックしてください。

あわせて読みたい
PythonでPlotlyを使ったグラフ描画応用編
応用編: PythonとPlotlyを使ったデータの可視化

以前にPlotly基礎編の記事を書かせて頂きました。 最新のデータから洞察するにはデータ可視化は不可欠なツールです。Plotlyを使用することで、複雑なデータを魅力的なグラフや図に変換することができま ...

続きを見る

それでは!また次回!

  • この記事を書いた人

メカタナ

副業ブロガー【経歴】関西出身▶︎理系国立大学院▶︎東証プライム上場企業メーカー開発職▶︎妻と息子1人と暮らしています。▶︎メカタナブログを開設⇒仕事や日常で役立つPythonプログラムを紹介していきます!

-Python