mei_13のPython講座 ロゴ

【解説】Pythonでデータを「見える化」する:Matplotlib基礎講座




🐍 初心者歓迎!月額4,000円で質問し放題のPython講座
(1時間4,000円の伴走型ビデオチャット指導も受付中!)
🚀 講座の詳細を見る 📩 質問・お問い合わせ

Pythonでデータを「見える化」する:Matplotlib基礎講座


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは。最近Pythonの勉強を進めているのですが、計算した結果を数値だけで見るのが少し大変になってきました。データをもっと分かりやすく、グラフや図にする方法はありますか?


Yukiのアイコン
【Yuki】 Hiroki君、こんにちは。そうですね……数字の羅列をずっと見ていると、目が疲れてしまいますよね。Pythonにはデータを視覚化するためのライブラリがいくつかありますが、その中でも最も基本的で、かつ強力なのがMatplotlib(マットプロットリブ)です。これを使えば、簡単な折れ線グラフから複雑な3Dグラフまで、思い通りに描くことができるんですよ。


Hirokiのアイコン
【Hiroki】 Matplotlib、聞いたことがあります!でも、設定が細かくて難しいイメージがあるのですが、僕のような初心者でも使いこなせるでしょうか。


Yukiのアイコン
【Yuki】 大丈夫ですよ。最初は少し独特な書き方に戸惑うかもしれませんが、基本の型を覚えてしまえば、あとはパズルのように組み合わせていくだけです。わたしと一緒に、少しずつ「データの可視化」の世界を覗いてみましょうか。

Matplotlibとは何か?


Hirokiのアイコン
【Hiroki】 まず、Matplotlibが具体的にどんなものなのか教えてもらえますか?


Yukiのアイコン
【Yuki】 はい。Matplotlibは、Pythonで2次元のグラフを描画するためのライブラリです。科学計算の世界では定番中の定番で、多くのデータサイエンティストやエンジニアが愛用しています。


Yukiのアイコン
【Yuki】 特徴としては、カスタマイズ性が非常に高いことが挙げられます。グラフの色、線の太さ、目盛りの間隔、フォントの細部に至るまで、自分の好みに調整できるんです。Webデザインでもフォント一つで印象がガラリと変わるように、グラフもデザイン次第で伝わりやすさが全く違ってくるんですよ。


Hirokiのアイコン
【Hiroki】 なるほど。カスタマイズができるのは楽しそうですね。まずは何から準備すればいいですか?


Yukiのアイコン
【Yuki】 まずはインストールですね。標準的な環境であれば、pipコマンドを使って簡単に導入できます。ターミナルやコマンドプロンプトで以下のコマンドを実行してみてください。

pip install matplotlib


Yukiのアイコン
【Yuki】 これで準備完了です。プログラムの中で使うときは、慣習的にmatplotlib.pyplotpltという名前でインポートします。これから書くコードの冒頭には、いつもこれを書くと思ってくださいね。

import matplotlib.pyplot as plt

はじめてのグラフ描画


Hirokiのアイコン
【Hiroki】 インストールできました。では、実際に何か描いてみたいです!


Yukiのアイコン
【Yuki】 では、一番シンプルな「折れ線グラフ」から始めてみましょうか。まずは、X軸とY軸に対応するデータのリストを用意して、それをplt.plot()に渡すだけです。

import matplotlib.pyplot as plt

# データの準備
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# グラフの作成
plt.plot(x, y)

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


Hirokiのアイコン
【Hiroki】 おおっ、これだけでウィンドウが立ち上がって、きれいな斜めの線が表示されました!すごく簡単ですね。


Yukiのアイコン
【Yuki】 ふふ、そうですね。でも、これだけだと「何を表しているグラフか」が分かりません。実用的なグラフにするためには、軸に名前を付けたり、タイトルを添えたりする必要があります。

グラフのデザインを整える(色とスタイル)


Hirokiのアイコン
【Hiroki】 確かに、今のままだとただの線ですね。もっと「グラフらしく」するにはどうすればいいんでしょうか。


Yukiのアイコン
【Yuki】 グラフの見た目を整えるのは、Matplotlibの得意分野です。例えば、線の色を変えたり、データポイントにマークを付けたりしてみましょう。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 色を赤(red)に、マーカーを丸(o)に、線を点線(--)にしてみます
plt.plot(x, y, color='red', marker='o', linestyle='--')

plt.show()


Hirokiのアイコン
【Hiroki】 線の雰囲気が変わりました!colorlinestyleという引数で指定するんですね。


Yukiのアイコン
【Yuki】 そうです。指定できる色は'blue'や'green'といった基本的な名前のほかに、16進数のカラーコード(#FF5733など)も使えます。わたしは、少し淡い水色なんかを使うと、画面が優しくなって好きですね……。

ラベルとタイトルの追加、そしてフォントへのこだわり


Hirokiのアイコン
【Hiroki】 次に、軸の名前やタイトルを入れる方法を教えてください。


Yukiのアイコン
【Yuki】 はい。plt.title()plt.xlabel()plt.ylabel()という関数を使います。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [1, 8, 27, 64, 125]

plt.plot(x, y)

# タイトルと軸ラベルの設定
plt.title('Sample Data Visualization')
plt.xlabel('Time (s)')
plt.ylabel('Value')

plt.show()


Hirokiのアイコン
【Hiroki】 これで一気にグラフらしくなりました!……あ、でもこれ、日本語を使うことはできるんですか?


Yukiのアイコン
【Yuki】 鋭いですね、Hiroki君。実はMatplotlibは、デフォルトのままだと日本語が「文字化け」して、□(豆腐)のようになってしまうんです。これは使用されているデフォルトのフォントが日本語に対応していないからなんですね。


Yukiのアイコン
【Yuki】 わたしはWebサイトのフォントが1ピクセルでもズレていたり、意図しないフォントに置き換わっていたりすると、気になって夜も眠れなくなってしまうタイプなので……ここはしっかり設定しておきたいところです。


Hirokiのアイコン
【Hiroki】 それは大変だ……。どうすれば日本語を表示できるんですか?


Yukiのアイコン
【Yuki】 一番簡単なのは、japanize-matplotlibというライブラリをインストールしてインポートする方法です。

pip install japanize-matplotlib
import matplotlib.pyplot as plt
import japanize_matplotlib # これを足すだけです

plt.plot([1, 2, 3], [1, 2, 3])
plt.title('日本語のタイトル')
plt.show()


Yukiのアイコン
【Yuki】 こうすることで、フォントの設定を細かく書かなくても日本語が綺麗に表示されるようになります。視覚的な情報の美しさは、データの信頼性にも繋がると思うので、大切にしたいポイントですね。

様々な種類のグラフに挑戦する


Hirokiのアイコン
【Hiroki】 折れ線グラフ以外にも、よく使うグラフはありますか?


Yukiのアイコン
【Yuki】 もちろんです。データの性質によって、最適なグラフの種類は異なります。代表的なものをいくつか紹介しますね。まずは「散布図」です。2つのデータの相関関係を見たいときに使います。

# 散布図
plt.scatter(x, y, color='blue')


Yukiのアイコン
【Yuki】 次に「棒グラフ」です。項目の大きさを比較するのに適しています。

# 棒グラフ
labels = ['A', 'B', 'C']
values = [10, 20, 15]
plt.bar(labels, values)


Yukiのアイコン
【Yuki】 そして「ヒストグラム」ですね。データの分布を確認するのに非常に便利です。

# ヒストグラム
import numpy as np
data = np.random.randn(1000) # ランダムなデータを作成
plt.hist(data, bins=30)


Hirokiのアイコン
【Hiroki】 plotscatterbarに変えるだけで、色々なグラフが描けるんですね。これなら覚えられそうです。


Yukiのアイコン
【Yuki】 そう言ってもらえると嬉しいです。基本の使い方はどれも似ているので、一つ覚えれば応用が効きますよ。

複数のグラフを並べる(サブプロット)


Hirokiのアイコン
【Hiroki】 時々、一つの画像の中にいくつかのグラフが並んでいるのを見かけますが、あれはどうやっているんですか?


Yukiのアイコン
【Yuki】 それは「サブプロット」という機能を使っています。Matplotlibには、「オブジェクト指向インターフェース」という、より高度で整理された書き方があるんです。これを使うと、複数のグラフを制御しやすくなります。


Yukiのアイコン
【Yuki】 少しだけ難しく感じるかもしれませんが、これからの主流になる書き方なので、ぜひ今のうちに触れておきましょう。

import matplotlib.pyplot as plt

# 1行2列のキャンバスを作成
fig, axes = plt.subplots(1, 2, figsize=(10, 4))

# 1つ目のグラフ(左側)
axes[0].plot([1, 2, 3], [1, 4, 9])
axes[0].set_title('Graph 1')

# 2つ目のグラフ(右側)
axes[1].bar(['X', 'Y', 'Z'], [5, 2, 7])
axes[1].set_title('Graph 2')

plt.tight_layout() # レイアウトを自動で調整してくれます
plt.show()


Hirokiのアイコン
【Hiroki】 figaxes……?急に新しい言葉が出てきました。


Yukiのアイコン
【Yuki】 そうですね……例えるなら、fig(Figure)は「画用紙」そのもので、axes(Axes)は、その上に描かれる「一つひとつのグラフ領域」のことだと思ってください。この書き方だと、どの領域に何を描くかを明確に指定できるので、複雑なレイアウトも作りやすくなるんです。


Hirokiのアイコン
【Hiroki】 なるほど。画用紙の中に枠をいくつか作るイメージですね。


Yukiのアイコン
【Yuki】 はい、その通りです。最後に追加したplt.tight_layout()は、グラフ同士やラベルが重ならないように自動で隙間を調整してくれる、とても気が利く命令なんですよ。

グラフの保存とまとめ


Hirokiのアイコン
【Hiroki】 描いたグラフを画像ファイルとして保存して、レポートやブログに使いたいときはどうすればいいですか?


Yukiのアイコン
【Yuki】 その場合は、plt.show()を呼ぶ前にplt.savefig()を使います。

plt.plot(x, y)
plt.savefig('my_graph.png', dpi=300) # dpiで解像度を指定できます


Yukiのアイコン
【Yuki】 dpiの値を大きくすると、印刷しても耐えられるくらい高精細な画像になります。Webで使うなら、デフォルトか少し高めにするのが良いかもしれませんね。


Hirokiのアイコン
【Hiroki】 保存まで完璧にできるようになりました!Matplotlibって、最初は難しそうに見えたけど、一つ一つの命令にちゃんと意味があって面白いですね。


Yukiのアイコン
【Yuki】 そう言ってもらえると、わたしも教えた甲斐がありました……。Matplotlibは奥が深くて、今回紹介したのはほんの入り口に過ぎません。アニメーションを作ったり、3Dでデータをプロットしたりすることもできるんです。


Yukiのアイコン
【Yuki】 でも、まずは今回の基本をしっかり身につけて、自分のデータを可視化してみてください。数字だけでは見えなかった「データの体温」のようなものが、グラフにすることで見えてくるかもしれません。


Hirokiのアイコン
【Hiroki】 データの体温……。素敵な表現ですね。僕も色々なデータをグラフにして、何か新しい発見をしてみたいと思います。Yukiさん、ありがとうございました!


Yukiのアイコン
【Yuki】 いえいえ、どういたしまして。もし、また表示がズレたり、デザインで悩んだりしたらいつでも聞いてくださいね。……ふふ、Hiroki君がどんなグラフを作るのか、少し楽しみにしています。


参考リソース - Matplotlib 公式ドキュメント (英文) - japanize-matplotlib GitHubリポジトリ - Matplotlib チュートリアル (User's Guide)



「Matplotlib」のサンプルコードを見る

< Numpy
コラム一覧に戻る
Pandas >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
4,000円/60分伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

📩 質問・お問い合わせはこちら



AIアシスタント Yuki