初心者でもわかる:Matplotlibのカラーマップ(cmaps)の基本と活用法

※本サイトにはプロモーション・広告が含まれています。

(最終更新月: 2024年5月)

✔このような方へ向けて書かれた記事となります
「matplotlibのcmaps(カラーマップ)ってどんな種類があるのだろう?」
「matplotlibでcmapsを使う方法を知りたい」
「cmapsの実例を見てみたい」

✔当記事を通じてお伝えすること
matplotlibのcmapsの基本
cmapsの使い方やその応用
cmapsの具体的な利用例

この記事では、matplotlibのcmapsの基本から、そのオプション機能の活用方法まで、具体的な例を交えて詳しく解説しています。

ぜひ最後までお楽しみください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Matplotlibとは?

こちらでは、Matplotlibの概要についてお伝えしていきます。

Matplotlibとは、Pythonで非常に強力なデータ可視化を行うためのライブラリ。

各種グラフやチャートの描画が可能で、科学的なデータの視覚化にも多用されています。

基本的な利用方法を理解することで、多岐にわたるデータの視覚化が簡単に行えるようになります。

  • Matplotlibの基本
  • Matplotlibのインストール方法
  • 主な使い方

Matplotlibの基本

Matplotlibを利用すると、以下のようななタイプのグラフを生成できます。

  • 折れ線グラフ
  • 棒グラフ
  • ヒストグラム
  • 散布図

また、カラーマップを利用することで、データの違いや傾向を視覚的に感認しやすくします。

# 折れ線グラフの例
import matplotlib.pyplot as plt
import numpy as np

# データの作成
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(8, 6))
plt.plot(x, y)
plt.title('Sin Wave')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

# 棒グラフの例
import matplotlib.pyplot as plt
import numpy as np

# データの作成
labels = ['A', 'B', 'C', 'D', 'E']
values = [10, 20, 15, 25, 18]

# グラフの作成
plt.figure(figsize=(8, 6))
plt.bar(labels, values)
plt.title('Bar Chart')
plt.xlabel('Category')
plt.ylabel('Value')
plt.show()

Matplotlibのインストール方法

Matplotlibを使うには、Python環境にインストールする必要があります。

以下のコマンドを使ってインストールできます。

pip install matplotlib

主な使い方

データを視覚化するために必要な基本的な用法を紹介します。

# ヒストグラムの例
import matplotlib.pyplot as plt
import numpy as np

# データの作成
data = np.random.normal(0, 1, 1000)

# グラフの作成
plt.figure(figsize=(8, 6))
plt.hist(data, bins=30, edgecolor='black')
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Count')
plt.show()

カラーマップの基礎

こちらでは、カラーマップの基本についてお伝えしていきます。

カラーマップを理解することで、データの視覚的な情報伝達が強力になります。

  • カラーマップとは?
  • カラーマップの選び方
  • カラーマップのカスタマイズ

カラーマップとは?

カラーマップとは、データの値範囲を色で表現する方法です。

異なる値を異なる色で表示することで、視覚的な解析が容易になります。

例えば、温度データや標高データを色で表現する際に、カラーマップが使用されます。

カラーマップの選び方

Matplotlibでカラーマップを選ぶ方法について説明します。

以下のコードでデータを視覚化できます。

  import matplotlib.pyplot as plt
  import numpy as np

  data = np.random.rand(10, 10)
  plt.imshow(data, cmap='viridis')
  plt.colorbar()
  plt.show()

カラーマップのカスタマイズ

独自のカラーマップを作成する方法を説明します。

例えば、次のコードでカスタムカラーマップを作成できます。

  from matplotlib.colors import LinearSegmentedColormap

  colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1)] # Red, Green, Blue
  n_bins = [300, 300, 300] # Discretizes the interpolation into bins
  cmap_name = 'custom_cmap'

  # Create the colormap
  cmap = LinearSegmentedColormap.from_list(cmap_name, colors, N=n_bins)

  # Testing
  plt.imshow(data, cmap=cmap)
  plt.colorbar()
  plt.show()

カラーマップの種類

こちらでは、異なるカラーマップの種類についてお伝えします。

カラーマップの種類を理解することで、データに応じて最適なカラーマップを選択でき、視覚的効果を最大化できます。

  • 連続カラーマップ
  • 分岐カラーマップ
  • 循環カラーマップ
  • 定性的カラーマップ
  • その他カラーマップ

連続カラーマップ

連続カラーマップ(Sequential)は、一連の値が増加するにつれて色が徐々に変わるもので、一貫したデータに適しています。

主に、密度や温度といった必然的な増分データに使用されます。

  • 連続カラーマップの例
  • 連続カラーマップの選び方
  • 連続カラーマップのカスタマイズ

連続カラーマップの例

以下は一般的に使用される連続カラーマップの例です。

  • Viridis
  • Plasma
  • Inferno

連続カラーマップの選び方

データの性質に基づき最適なカラーマップを選ぶ方法について解説します。

例えば、暗いバックグラウンドがデータの細かな差異を強調する場合は、InfernoやPlasmaが適しています。

連続カラーマップのカスタマイズ

連続カラーマップをカスタマイズする方法について説明します。

  from matplotlib.colors import LinearSegmentedColormap

  colors = [(1, 1, 0), (0, 1, 1), (1, 0, 1)] # Yellow, Cyan, Magenta
  n_bins = [100, 100, 100]
  custom_cmap = LinearSegmentedColormap.from_list('custom', colors, N=n_bins)
  plt.imshow(data, cmap=custom_cmap)
  plt.colorbar()
  plt.show()

分岐カラーマップ

分岐カラーマップ(Diverging)は、データの中央値で色が分岐し両端に向けて異なる色を持つカラーマップです。

差異の強調に適していて、中心点からの偏りを視覚的に把握しやすいです。

  • 分岐カラーマップの例
  • 分岐カラーマップの選び方
  • 分岐カラーマップのカスタマイズ

分岐カラーマップの例

以下は分岐カラーマップの代表的な例です。

  • coolwarm
  • PiYG

分岐カラーマップの選び方

重要な中央値を強調したい場合に最適です。例えば、温度データなら0度を中心に設定し、凍る側と熱せられる側を異なる色で示すことができます。

分岐カラーマップのカスタマイズ

分岐カラーマップをカスタマイズする方法を紹介します。

  from matplotlib.colors import DivergingNorm

  norm = DivergingNorm(vmin=-10, vcenter=0, vmax=10)
  plt.imshow(data, cmap='coolwarm', norm=norm)
  plt.colorbar()
  plt.show()

循環カラーマップ

循環カラーマップ(Cyclic)は、円周周期のデータや位相角など、始点と終点が一致するデータの表示に適しています。

  • 循環カラーマップの例
  • 循環カラーマップの選び方
  • 循環カラーマップのカスタマイズ

循環カラーマップの例

循環カラーマップの代表的な例としてhsvがあります。

循環カラーマップの選び方

位相データや方向性データを表示する際に、循環するカラーマップが不可欠です。

例えば、風向きデータなどに適用されます。

循環カラーマップのカスタマイズ

循環カラーマップをカスタマイズする方法について説明します。

  from matplotlib.colors import Normalize
  from matplotlib import cm

  norm = Normalize(vmin=0, vmax=2*np.pi)
  rgba = cm.get_cmap('hsv')(norm(data))
  plt.imshow(rgba, interpolation='nearest')
  plt.colorbar()
  plt.show()

定性的カラーマップ

定性的カラーマップ(Qualitative)は、異なるカテゴリデータを視覚化する際に用いられるカラーマップです。

特定の色がカテゴリを示し、色の違いでカテゴリを識別しやすくします。

  • 定性的カラーマップの例
  • 定性的カラーマップの選び方
  • 定性的カラーマップのカスタマイズ

定性的カラーマップの例

以下は定性的カラーマップの例です。

  • tab10
  • Set3

定性的カラーマップの選び方

カテゴリデータが明確に区別できるよう、十分な色数があるカラーマップを選びましょう。

データが多くなる場合には、カテゴリ間で混同しないよう工夫が必要です。

定性的カラーマップのカスタマイズ

定性的カラーマップをカスタマイズする方法を説明します。

  from matplotlib.colors import ListedColormap

  custom_colors = ['#FF0000', '#00FF00', '#0000FF']
  custom_cmap = ListedColormap(custom_colors)
  plt.scatter(x, y, c=labels, cmap=custom_cmap)
  plt.colorbar()
  plt.show()

その他カラーマップ

こちらでは、上記のカテゴリに該当しないその他のカラーマップを紹介します。

  • その他カラーマップの例
  • その他カラーマップの選び方
  • その他カラーマップのカスタマイズ

その他カラーマップの例

その他カラーマップの例

Matplotlibには、連続、分岐、循環、定性的カラーマップ以外にも、様々な用途に合わせたカラーマップが用意されています。例えば、地理データや地形データの可視化に適した以下のようなカラーマップがあります。

  • gist_earth: 地球の地形を表現するカラーマップ
  • terrain: 地形の高低を表すカラーマップ
import matplotlib.pyplot as plt
import numpy as np

# データの作成
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = np.exp(-(X**2 + Y**2))

# gist_earthカラーマップ
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, cmap='gist_earth')
plt.colorbar()
plt.title('gist_earth Colormap')
plt.show()

# terrainカラーマップ
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, cmap='terrain')
plt.colorbar()
plt.title('terrain Colormap')
plt.show()

その他カラーマップの選び方

特定の用途に合わせてカラーマップを選ぶ際は、データの性質や目的に応じて適切なものを選びます。

例えば、地理データや地形データを可視化する場合は、上記の gist_earthterrain などの地理系カラーマップが適しています。

一方、科学データの可視化には viridis などの連続カラーマップが適しています。

その他カラーマップのカスタマイズ

Matplotlibでは、既存のカラーマップをカスタマイズすることも可能です。

LinearSegmentedColormap クラスを使って、カラーマップの色やカラーポイントを指定できます。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

# カスタムカラーマップの定義
colors = ['darkblue', 'skyblue', 'lightgreen', 'yellow', 'red']
cmap = LinearSegmentedColormap.from_list('custom', colors)

# データの作成
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = np.exp(-(X**2 + Y**2))

# カスタムカラーマップの利用
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, cmap=cmap)
plt.colorbar()
plt.title('Custom Colormap')
plt.show()

カラーマップの応用

こちらでは、カラーマップの応用についてお伝えします。

カラーマップを応用することで、データの表現力がさらに向上するでしょう。

  • 明度の調整
  • グレースケール変換
  • 色覚異常への配慮

明度の調整

明度はデータの視覚的理解を助ける重要な要素です。

明度を調整する方法です。

  from matplotlib.colors import LightSource

  ls = LightSource(azdeg=315, altdeg=45)
  shaded_data = ls.shade(data, cmap='viridis')
  plt.imshow(shaded_data)
  plt.colorbar()
  plt.show()

グレースケール変換

データをグレースケールで表示する方法について説明します。

グレースケールは印刷物などで有効です。

  grayscale_cmap = plt.cm.get_cmap('gray')
  plt.imshow(data, cmap=grayscale_cmap)
  plt.colorbar()
  plt.show()

色覚異常への配慮

色覚異常の方々にとって見やすいカラーマップを選ぶことも重要です。

色覚異常に配慮した設定方法について説明します。

  plt.imshow(data, cmap='cividis')  # 色覚異常に対応したカラーマップ
  plt.colorbar()
  plt.show()

実践例:データの可視化

こちらでは、カラーマップを使った具体的なデータ可視化の例を紹介します。

実践を通じて理解を深めましょう。

  • ヒートマップの作成
  • 散布図でのカラーマップの使用
  • 等高線図の作成

ヒートマップの作成

ヒートマップを使ったカラーマップの使用例です。

以下のコード例で、温度データをカラーマップで視覚化します。

  temperatures = np.random.rand(100, 100) * 30
  plt.imshow(temperatures, cmap='coolwarm')
  plt.colorbar(label='Temperature (°C)')
  plt.title('Heatmap of Temperatures')
  plt.show()

散布図でのカラーマップの使用

散布図にカラーマップを適用する方法を説明します。

これにより、異なるカテゴリやグループごとにデータを色分けが可能です。。

  plt.scatter(x, y, c=z, cmap='viridis')
  plt.colorbar(label='Category')
  plt.title('Scatter Plot with Colormap')
  plt.xlabel('X-axis')
  plt.ylabel('Y-axis')
  plt.show()

等高線図の作成

等高線図でカラーマップを活用する方法について説明します。

等高線図は、地理データや標高データに対して効果が高いです。

  x = np.linspace(-5, 5, 100)
  y = np.linspace(-5, 5, 100)
  X, Y = np.meshgrid(x, y)
  Z = np.sin(np.sqrt(X**2 + Y**2))

  plt.contourf(X, Y, Z, levels=50, cmap='terrain')
  plt.colorbar()
  plt.title('Contour Plot with Colormap')
  plt.xlabel('X-axis')
  plt.ylabel('Y-axis')
  plt.show()

まとめ

Matplotlibには多様なカラーマップが用意されており、データの性質や目的に合わせて適切なものの選択が重要です。

カラーマップの適切な選択と活用は、データの視覚化の質を大きく左右します。

当記事で紹介した情報を活用し、わかりやすく魅力的な可視化を実現しましょう。

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