Plotlyの”Express”と”Graph Objects”って何が違うの?

Pythonでインタラクティブなグラフを作ることができる「Plotly」。

Plotlyには、ExpressとGraph Objectsの2つの使い方があるのをご存知でしょうか?
この2つはどちらも同じように可視化が可能ですが、実は使い方や特徴に違いがあります。

本記事では、それぞれの違いや特徴、メリット・デメリットを簡単な例も交えて紹介し、「どちらをいつ使うべきか?」について、解説していきます。

Plotly Express(px)とは

Plotly Express は、シンプルで直感的にグラフを作れる高レベルAPI(=提供される機能が大雑把で簡単に使えるAPI)です。

折れ線グラフや棒グラフなど、グラフの種類ごとに関数が用意されており、コードもシンプルでわかりやすいため、初心者でも簡単にグラフの作成が可能です。

一方、カスタマイズの自由度は限定的であり、複数軸やサブプロット(複数のグラフを1ページに並べる)などの複雑な構成も苦手としています。

コード例(折れ線グラフ)

import pandas as pd
import plotly.express as px

# サンプルデータの作成
df = pd.DataFrame({
'日付': pd.date_range(start='2025-01-01', periods=7),
'売上': [100, 150, 130, 170, 200, 220, 210]
})

# 折れ線グラフの作成
fig = px.line(df, x='日付', y='売上', title='日別売上の推移')
fig.show()
Python

シンプルな折れ線グラフを作成する例ですが、グラフの作成自体に必要なコードはわずか2行と、非常に簡単に作成できることがわかります。


Plotly Graph Objects(go)とは

Plotly Graph Objects は、低レベルAPI(=提供される機能が細かく、詳細な設定が必要なAPI)で、細かいカスタマイズに対応したグラフ作成が可能です。

そのため、pxが苦手とする細部のこだわりや複雑な構成にも対応しています。

一方、グラフの要素(トレースやレイアウトなど)を記述していく必要があることから、単純なグラフでもコード量が多くなる傾向があるため、やや学習コストが高いと言えるでしょう。

コード例(折れ線グラフ)

import plotly.graph_objects as go

# 折れ線グラフの作成
fig = go.Figure()
fig.add_trace(
    go.Scatter(
        x=df['日付'],
        y=df['売上'],
        mode='lines+markers',
        marker_symbol='diamond',  
        marker_size=10,
        name='売上',
    )
)
fig.update_layout(
    title='日別売上の推移(goで作成)',
    xaxis_title='日付',
    yaxis_title='売上金額',
    template='plotly_white',
)
fig.show()
Python

表示内容を1つずつ設定する分、コードが多くなっていますが、細かなコントロールまで可能です。


どのように使い分けるべきか?

それぞれの特徴を踏まえ、px・goの使い分けについて、おすすめのシチュエーションを整理しました。

  • pxがおすすめのシチュエーション
    • はじめてPlotlyを使用する場合
    • 時間をかけずにサクッとデータを可視化したい場合
    • シンプルなデータを扱う場合
  • goがおすすめのシチュエーション
    • 複雑な構成を扱いたい場合
    • グラフの細部(色やラベル、注釈など)を調整したい場合
    • 納品物など本格的なグラフを作成したい場合

私の場合はとりあえずデータを可視化したいときや、EDA(探索的データ分析)を行うときなどにpx、ダッシュボードや細部にこだわったグラフを作成するときはgoを使用するなどの使い分けをしています。


まとめ

今回はPlotlyの2つの使い方について解説しました。

Plotly ExpressとGraph Objectsの違いを改めてまとめると、以下の通りとなります。

はじめのうちは、どちらを使えばいいか迷うこともありますが、どちらのアプローチも自由に選べることはPlotlyの強みでもあります。

自分のスタイルや目的に合わせて使い分け、Plotlyをうまく活用してください!

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