Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibで数値をカラースケールに変換する方法をわかりやすく解説

Matplotlibでは、数値データをカラースケール(カラーマップ)に変換することで、散布図などに色の濃淡として視覚的に表現できます。この記事では、数値をカラースケールに変換してプロットする具体的な手順を、サンプルコードとともに解説します。

変換の手順

  • numpyを使用して、x・y・c の3つのデータポイントを作成します。
  • 作成したデータポイントをPandasのデータフレームに変換します。
  • subplots()メソッドを使って、新しい図を作成(または既存の図をアクティブ化)します。
  • hotカラーマップを取得します。
  • データを線形に正規化するために、Normalize()クラスを使用します。
  • x・yのデータポイントと、線形正規化したカラーマップを使って散布図を描画します。
  • xデータポイントに合わせてxticksを設定します。
  • カラーバーを作成するために、スカラーをマッピング可能なScalarMappableオブジェクトを生成します。
  • colorbar()メソッドを使ってカラーバーを表示します。
  • show()メソッドで図を画面に表示します。

サンプルコード

from matplotlib import pyplot as plt, colors
import numpy as np
import pandas as pd
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.arange(12)
y = np.random.rand(len(x)) * 20
c = np.random.rand(len(x)) * 3 + 1.5
df = pd.DataFrame({"x": x, "y": y, "c": c})
fig, ax = plt.subplots()
cmap = plt.cm.hot
norm = colors.Normalize(vmin=2.0, vmax=5.0)
ax.scatter(df.x, df.y, color=cmap(norm(df.c.values)))
ax.set_xticks(df.x)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
fig.colorbar(sm)
plt.show()

実行結果

上記のコードを実行すると、c列の数値がhotカラーマップによって黒から赤、黄へと段階的に色分けされた散布図が表示されます。図の右側には、数値と色の対応関係を示すカラーバーも一緒に表示されます。

Matplotlibで数値をカラースケールに変換する方法をわかりやすく解説

ポイント解説

この処理の核となるのは colors.Normalize(vmin=2.0, vmax=5.0) です。vminとvmaxで指定した範囲に基づいて各数値が0〜1の値に線形変換され、その値がカラーマップ cmap に渡されることで対応する色が決まります。範囲外の値は自動的に端の色にクリップされるため、データの分布に応じて適切なvmin・vmaxを設定することが重要です。また、ScalarMappable を使うことで、実際のプロットとは独立にカラーバーを生成でき、色と数値の対応を読み取りやすくなります。

  1. MatplotlibでRectangle(長方形)に色を設定する方法

    Matplotlibで長方形(Rectangle)に色を設定するには、以下の手順に従います。手順figure() メソッドを使用して、新しい図(Figure)を作成するか、既存の図をアクティブにします。add_subplot() メソッドを使用して、サブプロット構成の一部として図に ~.axes.Axes を追加します。長方形は、アンカーポイント(基準座標)と幅・高さを指定することで定義できます。作成したRectangleパッチを add_patch() でプロットに追加します。xlim() および ylim() メソッドを使用して、x軸とy軸の表示範囲を設定します。図を表示するには、show

  2. Matplotlibのプロットにテーブル(表)を配置する方法

    データの可視化では、グラフと一緒に表形式のデータを表示したいケースがよくあります。Matplotlibではtable()メソッドを使うことで、プロット上に簡単にテーブルを配置できます。この記事では、pandasのデータフレームをもとに、Matplotlibのプロット内に見栄えの良いテーブルを作成する手順を解説します。 実装の手順 subplots()メソッドを使って、フィギュアサイズ(7, 7)のfigureとサブプロット(Axes)を作成します。 time(日時)と speed(速度)の2つの列を持つpandasのデータフレームを作成します。 df.shapeなどで配列のサイズを取得します