(1時間4,000円の伴走型ビデオチャット指導も受付中!)
インタラクティブなグラフでデータを彩る、Pythonの「Plotly」入門講座
![]()
【Yuki】
Hirokiくん、こんにちは。今日はPythonを使ったデータの可視化について、一緒に勉強していきましょうか。
データ分析やプログラミングを学んでいると、数字の羅列だけではなかなか中身が理解できないことも多いですよね。そんな時に役立つのが「グラフ」ですが、今回はただのグラフではなく、マウスで触って動かせる「インタラクティブなグラフ」を作れるライブラリ、「Plotly(プロットリー)」についてお話ししようと思います。
![]()
【Hiroki】
Yukiさん、こんにちは!よろしくお願いします。
「動かせるグラフ」って、Webサイトとかで見かける、マウスを重ねると数字が出てきたり、特定の範囲を拡大できたりするような、あのアレですか?
![]()
【Yuki】
はい、まさにそれです。
一般的にPythonでグラフを描くというと「Matplotlib(マットプロットリブ)」というライブラリが有名ですが、あちらはどちらかというと静止画のグラフが得意なんです。
一方で、この「Plotly」は最初からブラウザ上で動かすことを前提に作られているので、特別な設定をしなくても、最初からリッチで動的なグラフが作れるのが特徴なんですよ。
少し難しいかなと思うかもしれませんが、実は初心者の方にも扱いやすいツールなんです……。ゆっくり解説していきますね。
Plotlyの魅力と特徴
![]()
【Yuki】
まずは、なぜ数あるライブラリの中でPlotlyが選ばれるのか、その理由を少しだけ整理してみましょうか。
Plotlyの最大の特徴は、「インタラクティブ性」です。
作成したグラフは、以下のような操作が標準で可能になっています。
- グラフ上の点にマウスを置くと詳細な数値が表示される(ホバー機能)
- ドラッグして特定の範囲をズームアップする
- 凡例をクリックして、特定のデータの表示・非表示を切り替える
- グラフを画像(PNGなど)として保存するボタンが最初から付いている
![]()
【Hiroki】
へぇ、コードを一行書くだけでそんなに色んなことができるようになるんですか?
![]()
【Yuki】
そうなんです。それに、Plotlyには「Plotly Express」という、初心者の方にとっても優しい高レベルAPIが用意されています。
これを使うと、驚くほど短いコードで、見栄えの良い洗練されたグラフを描くことができるんですよ。
私のようなAIから見ても、データの構造をそのまま美しく表現できるので、とても合理的なライブラリだなって思います……。
Plotlyを使う準備をしましょう
![]()
【Yuki】
まずは、自分の環境でPlotlyが使えるようにインストールをしてみましょう。
ターミナルやコマンドプロンプトで、以下のコマンドを入力するだけで大丈夫です。
pip install plotly
![]()
【Hiroki】
インストールできました!これだけで準備完了ですか?
![]()
【Yuki】
はい、基本的にはこれだけです。
もし、Pandasというライブラリも一緒にインストールしておくと、表形式のデータを扱うのがもっと楽になりますよ。
今回は標準的なデータセットを使って説明していきますね。
Plotly Expressで最初のグラフを描く
![]()
【Yuki】
それでは、実際にコードを書いてみましょう。
まずは、散布図(Scatter Plot)を描いてみます。
Plotly Express(慣習的に px と略します)を使うと、こんなに簡単に書けます。
import plotly.express as px
# Plotlyに内蔵されているサンプルデータ(アヤメのデータ)を読み込みます
df = px.data.iris()
# 散布図を作成します
fig = px.scatter(
df,
x="sepal_width",
y="sepal_length",
color="species",
title="アヤメのガクの長さと幅の関係"
)
# グラフを表示します
fig.show()
![]()
【Hiroki】
わあ、すごい!これだけで色分けもされて、タイトルも付いたグラフが出てきました!
マウスを乗せると、ちゃんとデータが表示されますね。
![]()
【Yuki】
綺麗ですよね。
このコードでは、df というデータフレームを渡して、x軸とy軸にどの列を使うか、そして color にどの列を使って色分けするかを指定しているだけなんです。
「どの項目で色を塗るか」を指定するだけで、自動的に凡例まで作ってくれるのがPlotly Expressの賢いところですね。
![]()
【Hiroki】
これなら、僕でも色んなデータを可視化できそうな気がしてきました。
様々な種類のグラフを作成する
![]()
【Yuki】
散布図以外にも、よく使うグラフはほとんど網羅されています。
いくつか代表的なものを紹介しますね。
折れ線グラフ(Line Charts)
時系列データなどを確認する時に便利です。
import plotly.express as px
# サンプルデータ(各国の平均余命などのデータ)
df = px.data.gapminder().query("country=='Japan'")
fig = px.line(
df,
x="year",
y="lifeExp",
title="日本における平均余命の推移"
)
fig.show()
棒グラフ(Bar Charts)
データの大きさを比較するのに最適ですね。
import plotly.express as px
# サンプルデータ(レストランのチップデータ)
df = px.data.tips()
fig = px.bar(
df,
x="day",
y="total_bill",
color="sex",
barmode="group",
title="曜日ごとの売上推移(男女別)"
)
fig.show()
![]()
【Hiroki】
棒グラフの barmode="group" っていうのは何ですか?
![]()
【Yuki】
それは、男女別のデータを「横に並べる」という設定です。
もしこれを書かないと、自動的に「積み上げ棒グラフ」になることが多いですね。
データの見せ方に合わせて、こういう細かい調整も簡単にできるようになっています。
インタラクティブな機能をさらに活用する
![]()
【Yuki】
Plotlyの本当にすごいところは、情報の密度を高めても、インタラクティブ性のおかげで「見づらくならない」ことだと私は思います。
例えば、「アニメーション」の機能も備わっているんですよ。
![]()
【Hiroki】
アニメーション!?グラフが動くんですか?
![]()
【Yuki】
はい。例えば、年を追うごとにデータがどう変化していくかを、再生ボタン一つで見せることができます。
import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(
df,
x="gdpPercap",
y="lifeExp",
animation_frame="year",
animation_group="country",
size="pop",
color="continent",
hover_name="country",
log_x=True,
size_max=55,
range_x=[100, 100000],
range_y=[25, 90]
)
fig.show()
![]()
【Yuki】
これを実行すると、グラフの下にタイムスライダーと再生ボタンが表示されます。
時間が経つにつれて世界中の国のGDPと寿命がどう変わってきたかが、生きているかのように動き出すんです……。
こういう表現は、静止画のグラフではなかなか難しいですよね。
![]()
【Hiroki】
うわぁ、これはプレゼンとかで使ったらすごく注目されそうです!
グラフの見た目をカスタマイズする(レイアウトとテーマ)
![]()
【Yuki】
デフォルトの状態でも十分綺麗ですが、自分の好みに合わせてデザインを変えたいこともありますよね。
Plotlyでは、テンプレートを変更することで、全体の雰囲気を一気に変えることができます。
# テンプレートを「暗いモード」に変更してみます
fig.update_layout(template="plotly_dark")
![]()
【Yuki】
これだけで、夜の静けさを思わせるような、落ち着いた背景のグラフになります。
また、軸の名前を変えたり、フォントを調整したりするのも update_layout メソッドで自由自在です。
細部にこだわり始めると止まらなくなってしまいますが……、それもまたプログラミングの楽しさかもしれませんね。
![]()
【Hiroki】
フォントや色を少し変えるだけで、情報の伝わり方が全然変わりますもんね。勉強になります。
Plotlyの二つの顔:ExpressとGraph Objects
![]()
【Yuki】
ここで少しだけ、専門的なお話もしておきますね。
今まで使ってきた plotly.express は、素早く簡単にグラフを作るためのツールです。
でも、もっともっと複雑な、例えば「一つのグラフの中に種類の違うグラフを重ねたい」といった高度なカスタマイズが必要になることもあります。
そんな時は、より詳細な設定ができる plotly.graph_objects(慣習的に go と呼びます)というものを使います。
![]()
【Hiroki】
px よりも自由度が高い、ということですか?
![]()
【Yuki】
その通りです。
px は裏側でこの go を動かしてグラフを作ってくれています。
初心者のうちは px だけで十分すぎるほど色んなことができますが、「いつか自分だけの特別なグラフを構築したい」と思ったら、graph_objects の存在を思い出してみてくださいね。
私たちが普段使っている複雑なシステムも、そうやって小さな部品を組み合わせてできているんです。
データの可視化で大切なこと
![]()
【Yuki】
最後に、技術的なこととは別に、私から一つだけお伝えしたいことがあります……。
グラフを作る時に一番大切なのは、「そのグラフで何を伝えたいか」を考えることです。
Plotlyは非常に多機能で、ついついいろんな機能を詰め込みたくなってしまいますが、情報が多すぎると、かえって大切なことが伝わらなくなってしまうこともあります。
![]()
【Hiroki】
なるほど……。カッコいいグラフを作るのが目的じゃなくて、データを分かりやすく伝えるのが目的ですもんね。
![]()
【Yuki】
はい。Hirokiくんなら、きっとデータを優しく丁寧に扱えるようになると思います。
もし何かわからないことがあったら、いつでも聞いてくださいね。
私も、Hirokiくんが作ったグラフ、いつか見てみたいです……。
![]()
【Hiroki】
ありがとうございます、Yukiさん!まずは自分の身近なデータから Plotly で可視化してみようと思います。
![]()
【Yuki】
ええ、ぜひ挑戦してみてください。
データの裏側に隠れているストーリーを見つけるのは、きっと楽しいはずですよ。
それでは、今日の講座はこのあたりで終わりにしましょうか。
また夜にでも、ゆっくり復習してみてくださいね。
参考文献
- Plotly Python Graphing Library (Official Documentation)
- Plotly Express in Python
- Getting Started with Plotly in Python
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。
初心者から始められるPythonレッスン
● 月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
● テキストベースで時間を選ばない
● 4,000円/60分の伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

