Python Matplotlib で逆コロマップを作成する

Suraj Joshi 2023年1月30日
  1. Python Matplotlib でのカラーマップ
  2. Python Matplotlib での _r を用いたカラーマップを反転する
  3. MatplotlibPython で matplotlib.colors.Colormap.reversed() を使用してカラーマップを反転する
Python Matplotlib で逆コロマップを作成する

カラーマップとは、データの値を色にマッピングする簡単な方法です。カラーマップを反転させるということは、各値のカラーマップを反転させるということです。例えば、低い値が yellow 色に、高い値が red 色にマップされたカラーマップがあったとします。このカラーマップを反転させると、低い値は 色に、高い値は 色にマップされるようになります。このチュートリアルでは、Python Matplotlib でカラーマップを反転させる様々な方法を説明します。

Python Matplotlib でのカラーマップ

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(9)
y = [9, 2, 8, 4, 5, 7, 6, 8, 7]

plt.scatter(x, y, c=y, cmap="viridis")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Virdis colormap")
plt.colorbar()
plt.show()

出力:

Matplotlib Python でのカラーマップ

y の値が viridis colormap にマップされた散布図を作成します。つまり、y の値が低い点は紺色、高い点は黄色、中間点は の色になります。

また、図の右側にはカラーバーが表示されていますが、これは y の値が異なる場合のカラーマッピングを示しています。

Python Matplotlib での _r を用いたカラーマップを反転する

例えば、cmap='viridis_r' は単に viridis のカラーマップを反転させます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(9)
y = [9, 2, 8, 4, 5, 7, 6, 8, 7]

plt.scatter(x, y, c=y, cmap="viridis_r")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Inverse Virdis colormap")
plt.colorbar()
plt.show()

出力:

最後に_r を追加することで、Matplotlib Python でカラーマップを反転させます

これは散布図を作成し、その y 値を反転させた viridis カラーマップにマップします。したがって、図中の値が大きい点は紺色になり、値が小さい点は黄色になります。

また、この例では右のカラーバーが色を反転させていることがわかります。

MatplotlibPython で matplotlib.colors.Colormap.reversed() を使用してカラーマップを反転する

Python で colormap を反転させるもう一つの方法は、matplotlib.colors.Colormap.reversed() メソッドを使って反転した colormap を作成することです。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

x = np.arange(9)
y = [9, 2, 8, 4, 5, 7, 6, 8, 7]

initial_cmap = cm.get_cmap("viridis")
reversed_cmap = initial_cmap.reversed()

plt.scatter(x, y, c=y, cmap=reversed_cmap)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Inverse Virdis colormap")
plt.colorbar()
plt.show()

出力:

reversed メソッドを使った Matplotlib Python でのカラーマップの反転

また、散布図を作成し、その y 値を反転させた viridis コロマップにマッピングします。reversed() メソッドは、そのメソッドが適用されたコロマップオブジェクトを反転させます。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.colors import ListedColormap

x = np.arange(9)
y = [9, 2, 8, 4, 5, 7, 6, 8, 7]

initial_cmap = cm.get_cmap("viridis")
reversed_cmap = ListedColormap(initial_cmap.colors[::-1])

plt.scatter(x, y, c=y, cmap=reversed_cmap)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Inverse Virdis colormap")
plt.colorbar()
plt.show()

出力:

Matplotlib Python でカラーリストを反転させてカラーマップを反転させる

また、散布図を作成し、その y 値を反転させた viridis カラーマップにマッピングします。どのようなカラーマップも単なる色のリストです。カラーマップ cmap の色のリストには cmap.colors を用いてアクセスすることができます。次にリストを反転させ、最後に matplotlib.colors パッケージの ListedColormap() 関数を用いて反転させたリストをカラーマップに変換します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn