【Matplotlib入門 第1回】Pythonデータ可視化の第一歩!Matplotlibで美しいグラフを自由自在に描こう 📊
「数値の羅列だけだと、データの特徴が全然わからない…」
「Pythonで計算した結果を、Excelみたいに綺麗なグラフで表示したい!」
「データサイエンスに興味があるけど、まずは何から始めればいいんだろう?」
こんにちは! Pythonプログラミング探検隊、隊長のPythonistaです! これまで私たちは、Pythonの基本から始まり、標準ライブラリ、そしてNumPyのような数値計算ライブラリまで、様々なデータを「処理」するテクニックを学んできましたね。
今回から始まる新シリーズ「Matplotlib入門」では、その処理したデータを「可視化」する、つまり人間にとって直感的に理解しやすいグラフとして表現する方法を探求していきます。その主役となるのが、Pythonにおけるデータ可視化のデファクトスタンダード(事実上の標準)ライブラリ、Matplotlib (マットプロットリブ) です。
「百聞は一見にしかず」ということわざの通り、データをグラフにすることで、単なる数値のリストからは見えてこなかった傾向やパターン、関係性を一瞬で把握することができます。この記事を読めば、あなたもPythonを使って、基本的な折れ線グラフや棒グラフを簡単に作成し、タイトルやラベルで装飾し、画像として保存できるようになります。データ分析やレポート作成に不可欠な「可視化」のスキルを、ここから身につけていきましょう!
1. Matplotlibとは? Pythonデータ可視化の基盤
Matplotlib (マットプロットリブ) は、Pythonプログラミング言語とその数値計算ライブラリNumPyのための、グラフ描画ライブラリです。折れ線グラフ、棒グラフ、散布図、ヒストグラム、円グラフなど、非常に多種多様なグラフを高品質で描画することができます。
その柔軟性と拡張性の高さから、学術的な論文作成からビジネスのデータ分析レポートまで、幅広い分野で利用されています。NumPy、SciPy、Pandasといった他の科学技術計算ライブラリとの親和性も非常に高く、Pythonのデータサイエンスエコシステムの中心的な役割を担っています。
Matplotlibにはいくつかの使い方がありますが、今回は初心者にとって最も手軽で直感的なpyplot
というモジュールを使った方法を中心に解説していきます。
2. インストールと準備:グラフ描画の世界へようこそ
Matplotlibは外部ライブラリなので、利用する前にインストールが必要です。
2.1. インストール
ターミナルやコマンドプロンプトを開き、pipを使って以下のコマンドを実行してください。
pip install matplotlib
これだけでインストールは完了です。データ準備のためにNumPyも一緒に使うことが多いので、まだの方はpip install numpy
も実行しておくと良いでしょう。
2.2. インポートのお作法
PythonスクリプトでMatplotlibのpyplot
モジュールを使う際は、慣習的にplt
という別名を付けてインポートします。
import matplotlib.pyplot as plt
import numpy as np # NumPyも一緒にインポートしておくのが一般的
これでグラフを描画する準備が整いました!
3. あなたの最初のグラフ:折れ線グラフを描いてみよう 📈
まずは、最も基本的でよく使われる折れ線グラフから作成してみましょう。これは、データの時間的な変化や、連続した値の関係性を示すのに適しています。
3.1. 「Hello, Plot!」- 超シンプルな折れ線グラフ
Pythonのリストを使って、簡単なx軸とy軸のデータを用意し、グラフを描画してみます。
import matplotlib.pyplot as plt
# x軸のデータ (例: 0, 1, 2, 3, 4)
x_data = [0, 1, 2, 3, 4]
# y軸のデータ (例: 0, 1, 4, 9, 16) - xの2乗
y_data = [0, 1, 4, 9, 16]
# 1. グラフを描画
plt.plot(x_data, y_data)
# 2. グラフを表示
plt.show()
たったこれだけのコードで、グラフが描画されました!plt.plot(x, y)
でグラフの内容を定義し、plt.show()
でそれを画面に表示する、というのが基本的な流れです。
3.2. グラフを装飾!タイトルとラベルで分かりやすく
作成したグラフが何を表しているのかを伝えるために、タイトルや軸ラベルを追加するのは非常に重要です。他にも、線の色やスタイルを変えたり、凡例やグリッド線を追加したりできます。
import matplotlib.pyplot as plt
x_data = [0, 1, 2, 3, 4]
y_data1 = [0, 1, 4, 9, 16]
y_data2 = [0, 2, 3, 5, 12]
# グラフを描画 (色、線種、マーカー、ラベルを指定)
plt.plot(x_data, y_data1, color='blue', linestyle='-', marker='o', label='y = x^2')
plt.plot(x_data, y_data2, color='red', linestyle='--', marker='x', label='Another Data')
# グラフの装飾
plt.title('My First Matplotlib Graph') # グラフのタイトル
plt.xlabel('X-Axis Label') # X軸のラベル
plt.ylabel('Y-Axis Label') # Y軸のラベル
plt.legend() # 凡例を表示 (plotのlabelが必要)
plt.grid(True) # グリッド線を表示
# グラフを表示
plt.show()
plot()
の引数で線のスタイルを、title()
やxlabel()
などの関数で各種ラベルを簡単に追加できます。
4. カテゴリを比較!棒グラフを描いてみよう 📊
棒グラフは、異なるカテゴリ間の数量を比較するのに最適なグラフです。
4.1. 基本的な棒グラフ (plt.bar()
)
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D']
values = [23, 45, 18, 32]
plt.figure(figsize=(6,4)) # グラフのサイズを指定 (オプション)
plt.bar(categories, values, color='skyblue')
plt.title('Category Comparison')
plt.xlabel('Category')
plt.ylabel('Value')
plt.show()
カテゴリ名をリストで、対応する値をリストで渡すだけで、簡単に棒グラフが作成できます。
4.2. 水平棒グラフ (plt.barh()
)
カテゴリ名が長い場合など、横向きの棒グラフの方が見やすいことがあります。その場合はplt.barh()
を使います。
import matplotlib.pyplot as plt
long_categories = ['Category Alpha', 'Category Beta', 'Category Gamma']
values = [150, 210, 180]
plt.barh(long_categories, values, color='salmon')
plt.title('Horizontal Bar Chart')
plt.xlabel('Value')
plt.show()
5. グラフをファイルに保存しよう (plt.savefig()
)
作成したグラフは、画像ファイル(PNG, JPG, PDF, SVGなど)として保存できます。レポートに貼り付けたり、Webサイトで使ったりする際に便利です。
重要なポイント: plt.savefig()
は、plt.show()
を呼び出す**前に**実行する必要があります。plt.show()
はグラフを表示した後に、現在のグラフの状態をクリアしてしまうためです。
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [2, 4, 1]
plt.plot(x, y)
plt.title('Sample Plot to Save')
# グラフをファイルに保存 (show()の前に実行!)
output_filename = 'my_first_plot.png'
plt.savefig(output_filename, dpi=300) # dpiで解像度を指定できる
print(f"グラフを '{output_filename}' に保存しました。")
# グラフを表示
plt.show()
6. NumPyやPandasとの連携
Matplotlibは、NumPy配列やPandasのDataFrame/Seriesをデータとして直接扱うことができ、非常にスムーズに連携できます。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# --- NumPyとの連携 ---
x_np = np.linspace(-np.pi, np.pi, 200) # -πからπまでを200分割
y_np = np.cos(x_np)
plt.figure(figsize=(8,3))
plt.plot(x_np, y_np, label='cos(x) with NumPy')
plt.title('Plotting NumPy Data')
plt.legend()
plt.grid(True)
plt.show()
# --- Pandasとの連携 ---
# 簡単なDataFrameを作成
data = {
'month': ['Jan', 'Feb', 'Mar', 'Apr'],
'sales': [120, 150, 180, 160]
}
df = pd.DataFrame(data)
plt.figure(figsize=(6,4))
plt.bar(df['month'], df['sales'], color='#4CAF50')
plt.title('Monthly Sales (from Pandas)')
plt.ylabel('Sales (in thousands)')
plt.show()
# Pandas自身のプロット機能を使うとさらに簡単に書けることも
# df.plot(kind='bar', x='month', y='sales', legend=False)
# plt.show()
このように、データ分析でよく使われるNumPyやPandasで処理した結果を、シームレスにMatplotlibで可視化することができます。
まとめ:データ可視化の第一歩を踏み出そう!
今回は、Matplotlib入門シリーズの第1回として、Pythonでグラフを描画するための基本的な方法を学びました。
- Matplotlibのインストールと、
matplotlib.pyplot as plt
というインポートのお作法。 plt.plot()
を使った基本的な折れ線グラフの作成。plt.bar()
を使った棒グラフの作成。plt.title()
,plt.xlabel()
,plt.ylabel()
,plt.legend()
,plt.grid()
といった、グラフを分かりやすくするための装飾。- 作成したグラフを
plt.savefig()
で画像ファイルとして保存する方法。 - NumPyやPandasのデータを使ってスムーズにグラフを描画できること。
データをグラフとして視覚化するスキルは、データの中に隠されたストーリーを読み解き、それを他者に伝えるための非常に強力なツールです。Matplotlibには、今回紹介した以外にも散布図、ヒストグラム、円グラフなど、様々なグラフを描く機能があります。
次回は、これらの異なる種類のグラフの作成方法や、1つの図の中に複数のグラフ(サブプロット)を配置する方法など、さらに表現の幅を広げるテクニックについて学んでいきましょう。お楽しみに!
コメント
コメントを投稿