Matplotlibを使いこなしてデータを可視化

データサイエンス

はじめに

データサイエンスの世界では、データの可視化は分析結果を伝えるうえで欠かせないスキルです。
その中でも、Pythonの可視化ライブラリ「Matplotlib」は、柔軟性と表現力の高さから多くのデータサイエンティストに愛用されています。

Matplotlibとは?

Matplotlibは、Pythonでグラフや図を描画するためのライブラリです。以下のような特徴があります:

  • 折れ線グラフ、棒グラフ、散布図、ヒートマップなど多彩なグラフが描ける
  • 細かいレイアウト調整が可能
  • 他のライブラリ(Pandas、NumPy、Seabornなど)と連携しやすい

基本的なグラフ

折れ線グラフ

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

plt.plot(x, y)
plt.title("line chart")
plt.xlabel("X")
plt.ylabel("Y")
plt.grid(True)
plt.show()

このコードで、シンプルな折れ線グラフが描けます。plt.plot()でグラフの描画し、plt.show()で表示します。

棒グラフ

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [30, 25, 10, 40, 20]

plt.plot(x, y)
plt.title("bar chart")
plt.xlabel("X")
plt.ylabel("Y")
plt.grid(True)
plt.show()

円グラフ

import matplotlib.pyplot as plt

x = [A, B, C, D, E]
y = [40, 20, 30, 10, 25]

plt.pie(y, labels=x)
plt.title("bar chart")
plt.show()

データサイエンスでの活用例

1. データの傾向を視覚化する

さまざまな情報を上記のようなグラフで表すことで、データの推移やカテゴリ別のランキング、構成比などをひと目で把握することができます。

2. 分布の確認

ヒストグラムや散布図を使うことで、データの分布や相関関係を視覚的に理解できます。

ヒストグラム

import numpy as np

data = np.random.randn(1000)
plt.style.use('seaborn-v0_8')
plt.figure(figsize=(8, 5))
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
plt.title("Histogram of Normally Distributed Data")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.grid(True)

散布図

import numpy as np

x = np.random.randn(50)
y = np.random.randn(50)
plt.style.use('seaborn-v0_8')
plt.figure(figsize=(8, 5))
plt.scatter(x, y, color='dodgerblue', edgecolor='black', alpha=0.7)
plt.title("Scatter Plot of Random Data")
plt.xlabel("X values")
plt.ylabel("Y values")
plt.grid(True)

3. モデルの評価

機械学習モデルの予測結果と実測値を比較する際にもMatplotlibは有効で、残差プロットやROC曲線なども描くことができます。

カスタマイズで見やすく

今回は簡単な例を紹介しましたが、Matplotlibでは、線の色や太さ、フォント、凡例などを細かく調整したり、複数のグラフを組み合わせることも可能です。

他ライブラリとの連携

  • Pandasdf.plot()でMatplotlibを内部的に利用
  • Seaborn:Matplotlibをベースにした高機能な可視化ライブラリ
  • Plotly:インタラクティブなグラフを作成したい場合におすすめ

まとめ

Matplotlibは、データサイエンスにおける「可視化」の強力な武器です。
より説得力のある分析結果をつくるため、最初はシンプルなグラフから始めて、徐々にカスタマイズや応用に挑戦してみましょう!

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