Pythonでデータを可視化しよう!グラフ作成の基本からカスタマイズまで
![]()
【Hiroki】
Yukiさん、こんにちは。最近Pythonの勉強をしているんですけど、計算結果を数字だけで見るのが少し大変になってきて……。データを図やグラフにして、パッと見てわかるようにする方法ってありますか?
![]()
【Yuki】
Hiroki君、こんにちは。数字の羅列を追いかけるのは、確かに少し疲れてしまうかもしれませんね……。Pythonには「データの可視化」といって、数値をグラフにするための素晴らしいライブラリがたくさん用意されているんですよ。
![]()
【Hiroki】
「可視化」ですか、カッコいい響きですね!具体的にはどんなものを使うんですか?
![]()
【Yuki】
一番有名で、多くの人が使っているのは「Matplotlib(マットプロットリブ)」というライブラリだと思います。これを使えば、折れ線グラフや棒グラフ、散布図など、ほとんどのグラフを作成することができるんです。今日は、その基本的な使い方を一緒に見ていきましょうか。
なぜPythonでグラフを作るの?
![]()
【Hiroki】
グラフならエクセルとかでも作れますよね?あえてPythonで書くメリットって何なんでしょう。
![]()
【Yuki】
そうですね……。もちろんエクセルも便利ですが、Pythonを使うと、大量のデータから自動的に何百枚ものグラフを生成したり、複雑な計算とグラフ作成を一つのプログラムの中で完結させたりできるのが強みだと思います。
![]()
【Hiroki】
なるほど、自動化ができるのはプログラミングならではですね。
![]()
【Yuki】
ええ。それに、デザインを細かく制御できるのも魅力の一つかもしれません。フォントの大きさや線の太さ、色使いなど……見やすさにこだわったグラフを作ることができるようになると、情報の伝わり方が全然違ってくるんですよ。
準備:Matplotlibをインストールしよう
![]()
【Hiroki】
さっそくやってみたいです!まずは何をすればいいですか?
![]()
【Yuki】
まずは、Matplotlibを使えるように準備しましょう。コマンドラインやターミナルで、次のコマンドを入力してみてください。
pip install matplotlib
![]()
【Hiroki】
入力しました!……「Successfully installed」って出たので、大丈夫そうです。
![]()
【Yuki】
よかったです。これで準備は整いました。プログラムの冒頭では、いつもこのようにインポートして使います。
import matplotlib.pyplot as plt
![]()
【Yuki】
as plt と付けるのは、プログラムの中で plt という短い名前で呼び出せるようにするための、慣習のようなものですね。
最初の第一歩:折れ線グラフを描く
![]()
【Hiroki】
準備ができたら、まずは簡単なグラフから描いてみたいです。
![]()
【Yuki】
では、一番シンプルな「折れ線グラフ」を作ってみましょう。たとえば、1週間の気温の変化をグラフにしてみる、というのはどうでしょうか。
import matplotlib.pyplot as plt
# データの準備
days = [1, 2, 3, 4, 5, 6, 7]
temp = [20, 21, 19, 22, 25, 23, 21]
# グラフを作成
plt.plot(days, temp)
# グラフを表示
plt.show()
![]()
【Hiroki】
あ、新しいウィンドウが開いて、線グラフが表示されました!たったこれだけでいいんですね。
![]()
【Yuki】
はい。plt.plot(x軸のデータ, y軸のデータ) というのが基本の形です。これだけで、データを線でつないだ図を作成してくれるんですよ。
グラフを見やすく整える:タイトルとラベル
![]()
【Hiroki】
グラフは出たんですけど、これだけだと何のデータか分かりにくいですね。縦軸と横軸が何を表しているかとか、タイトルとかは付けられないんですか?
![]()
【Yuki】
もちろん、追加できますよ。グラフを読み取る人に優しくするのは、とても大切なことだと思います。少しコードを付け足してみましょう。
import matplotlib.pyplot as plt
days = [1, 2, 3, 4, 5, 6, 7]
temp = [20, 21, 19, 22, 25, 23, 21]
plt.plot(days, temp)
# タイトルを追加
plt.title("Weekly Temperature")
# 軸ラベルを追加
plt.xlabel("Day")
plt.ylabel("Temperature (C)")
# グリッド(網目)を表示
plt.grid(True)
plt.show()
![]()
【Hiroki】
おぉ、だいぶ「グラフらしく」なりました!グリッドがあると、数値が読み取りやすくていいですね。
![]()
【Yuki】
そう言ってもらえると嬉しいです。ちなみに、日本語を使いたい場合は少し工夫が必要なのですが、まずは英語で基本を押さえていくのがスムーズかもしれません。
データの個性を引き出す:棒グラフと散布図
![]()
【Hiroki】
折れ線グラフ以外にも、よく使うグラフってありますか?
![]()
【Yuki】
そうですね……。量の違いを比較したいときは「棒グラフ」、データ同士の相関関係を見たいときは「散布図」がよく使われると思います。
![]()
【Hiroki】
それらも簡単に作れるんでしょうか?
![]()
【Yuki】
ええ、plt.plot() の部分を少し変えるだけです。たとえば棒グラフなら plt.bar() を使います。
# 棒グラフの例
labels = ["A", "B", "C", "D"]
values = [10, 25, 15, 30]
plt.bar(labels, values)
plt.title("Sample Bar Chart")
plt.show()
![]()
【Yuki】
そして、散布図なら plt.scatter() ですね。
# 散布図の例
x = [1, 2, 3, 4, 5, 6]
y = [2, 4, 1, 6, 8, 5]
plt.scatter(x, y)
plt.title("Sample Scatter Plot")
plt.show()
![]()
【Hiroki】
なるほど、関数の名前がそのままグラフの種類になっているんですね。覚えやすそうです。
もっと美しく:色の変更とスタイルの適用
![]()
【Hiroki】
あの、もう少し見た目を自分好みに変えたりはできないんでしょうか。青い線だけじゃなくて、もっと別の色にしたいな、とか。
![]()
【Yuki】
ふふ、こだわりたい気持ち、よくわかります……。色は color という引数で簡単に変えられますよ。さらに、Matplotlibには「スタイル」という機能があって、一気に全体の雰囲気を変えることもできるんです。
import matplotlib.pyplot as plt
# スタイルを適用(例えば 'ggplot' というスタイル)
plt.style.use('ggplot')
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
# 色を水色に、線の太さを3に、マーカー(点)を付ける
plt.plot(x, y, color='skyblue', linewidth=3, marker='o')
plt.title("Stylish Graph")
plt.show()
![]()
【Hiroki】
わあ、急にオシャレになりましたね!背景に色がついて、線も太くなって見やすいです。
![]()
【Yuki】
デザインを少し整えるだけで、データが持っているメッセージがより際立ってくる気がしませんか?わたしは、こういう細かな調整をしている時間が、一番静かで落ち着くので好きだったりします……。
![]()
【Hiroki】
確かに、綺麗になると「できた!」っていう達成感がありますね。
複数のデータを一つのグラフにまとめる
![]()
【Hiroki】
もし、2つのデータを比較したい時はどうすればいいですか?たとえば「去年と今年の気温」を同時に表示したい、みたいな。
![]()
【Yuki】
それもよくあるケースですね。その場合は、plt.show() を呼ぶ前に、plt.plot() を2回記述すればいいんです。その際、どちらが何のデータか分かるように「凡例(レジェンド)」を付けるのが一般的です。
import matplotlib.pyplot as plt
days = [1, 2, 3, 4, 5, 6, 7]
temp_last_year = [18, 19, 17, 20, 22, 21, 19]
temp_this_year = [20, 21, 19, 22, 25, 23, 21]
plt.plot(days, temp_last_year, label="Last Year")
plt.plot(days, temp_this_year, label="This Year")
# 凡例を表示
plt.legend()
plt.title("Comparison of Temperature")
plt.show()
![]()
【Hiroki】
plt.legend() を書くだけで、右上に説明が出てきました!これで比較もバッチリですね。
グラフを保存して共有しよう
![]()
【Hiroki】
作成したグラフを、レポートとかに使いたいときはどうすればいいんでしょう。スクリーンショットを撮るしかないですか?
![]()
【Yuki】
いえいえ、Pythonなら画像ファイルとして直接保存できますよ。plt.show() の代わりに、plt.savefig() という関数を使います。
plt.plot(days, temp_this_year)
plt.title("My Graph")
# 画像として保存(PNG形式など)
plt.savefig("my_graph.png")
![]()
【Hiroki】
おぉ、フォルダの中に画像が保存されました!これなら資料に貼り付けるのも簡単ですね。
![]()
【Yuki】
そうですね。解像度を高く保存したいときは、dpi=300 のように指定すると、印刷しても綺麗な画像になります。
さらなる高みへ:Seabornの紹介
![]()
【Hiroki】
Matplotlibだけでも十分すごいですけど、もっと簡単に、もっと綺麗なグラフを作る方法は他にもあるんですか?
![]()
【Yuki】
意欲的ですね、素晴らしいと思います……。実は、Matplotlibをベースにしつつ、より洗練されたデザインと高度な統計グラフを簡単に描けるようにした「Seaborn(シーボーン)」というライブラリもあるんですよ。
![]()
【Hiroki】
Seaborn……。どんな違いがあるんですか?
![]()
【Yuki】
たとえば、データの分布を密度で表したり、複雑な行列データを色で表現したり(ヒートマップ)するのが、驚くほど短いコードで書けるんです。色使いもデフォルトでとても美しく設定されているので、デザインに自信がない人でもプロのようなグラフが作れます。
![]()
【Hiroki】
それは気になります。
![]()
【Yuki】
もし興味があれば、まずはMatplotlibに慣れてから、次にSeabornを覗いてみてください。一歩ずつ進んでいけば、きっとデータ分析がもっと楽しくなるはずです。
最後に:可視化で大切なこと
![]()
【Hiroki】
Yukiさん、今日はありがとうございました。グラフが描けると、プログラミングでできることが一気に広がった気がします。
![]()
【Yuki】
喜んでもらえてよかったです。最後に一つだけ……グラフを作る時に一番大切なのは、何を見せたいかを明確にすることだと思います。派手な色を使ったり、複雑な図形を使ったりすることよりも、相手に「何が起きているか」を正確に伝えること。
![]()
【Hiroki】
正確に、ですか。
![]()
【Yuki】
はい。データは嘘をつきませんが、見せ方一つで誤解を与えてしまうこともあります。だからこそ、丁寧に、真摯にデータと向き合ってグラフを作ってあげてくださいね。……あ、なんだか少し真面目な話になりすぎてしまいました。
![]()
【Hiroki】
いえ、すごく勉強になりました!僕も、見た目が綺麗で、かつ正確に伝わるグラフが作れるように練習してみます。
![]()
【Yuki】
ええ、応援しています。もし分からないことがあったら、いつでも聞いてくださいね。夜はまだ長いですから、自分のペースでゆっくり試してみてください。
参考リソース
- Matplotlib 公式ドキュメント
- Matplotlib チュートリアル (公式)
- Seaborn 公式ドキュメント
- Python Data Science Handbook - Visualization with Matplotlib
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。


