colormapの使い方と一覧【matplotlib】

matplotlibのcolormapの記事のアイキャッチmatplotlib

cmapのデフォルトの確認

plt.rcParams['image.cmap']を見るとデフォルトで使われているcmap(colormap)を確認することができます

僕のはviridisでした

import matplotlib.pyplot as plt

print(plt.rcParams['image.cmap'])
# viridis

colormapの変更

画像

画像はこんな感じでplt.imshow()を用いて表示することができます
画像のcmapを変更したい場合はplt.imshow()cmapにカラーマップ名を与えることで変更が可能です

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

img = Image.open('ahiru.png')
img_array = np.asarray(img)
plt.imshow(img_array)
plt.show()
デフォルトのcmapのimshow

モノクロにしたい時はcmap='gray'cmap='gray'とすればOK

画像データは1チャネルにしておきましょう

plt.imshow(img_array[:, :, 0], cmap='gray')
grayのcmapのimshow

他のcmapではこんな感じになる
気持ち悪い…笑

plt.imshow(img_array[:, :, 0], cmap='summer')
summerのcmapのimshow

2次元グラフ

折れ線グラフをいくつも描画していくと、それぞれの線は色が違いますよね?
この線の色を変えたい場合にもカラーマップを使うことができます

デフォルトではこんな色の線が描画されるようです

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-3, 3, 0.01)
lines = 10
for i in range(lines):
    y = np.sin(x) + i
    plt.plot(x, y)
plt.show()
デフォルトの色の線グラフ

それではカラーマップを使って線の色を変更していきましょう

まずplt.plot()にはcmapといった便利なものはないので、colorを使って一つ一つの線の色を決定する必要があります

といっても手作業で色を指定するわけではなく、カラーマップに対応したRGBAを取得します

カラーマップを使うためにmatplotlib.cmをimportしましょう
cm.カラーマップ名(0.0~1.0の値)でその値に対応したカラーマップのRGBA値を取得することができます
線の数だけ等間隔にRGBAを取得し、colorに与えることで、カラーマップの色に沿った線の色にすることができるのです

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

x = np.arange(-3, 3, 0.01)
lines = 10
for i in range(lines):
    y = np.sin(x) + i
    plt.plot(x, y, color=cm.magma( i/lines ))
plt.show()
magmaのcmapの線グラフ

3Dグラフ

3Dグラフでもcmapを使うことができます
変化がわかりやすいので、曲面グラフでcmapを使ってみましょう

3Dグラフの作り方についてはこちらご覧ください

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

x = y = np.arange(-3, 3, 0.01)
X, Y = np.meshgrid(x, y)

z = np.exp(-(X**2 + Y**2))

ax.plot_surface(X,Y,z, cmap='terrain')
plt.show()
terrainのcmapの3dグラフ
ax.plot_surface(X,Y,z, cmap='jet')
jetのcmapの3dグラフ

確かにcmapを使うことで、colormapが変更されているのがわかりますね

colormap一覧

Perceptually Uniform Sequential colormapsの画像
Sequential colormapsの画像
Sequential colormapsの画像2枚目
Diverging colormapsの画像
Cyclic colormapsの画像
Qualitative colormapsの画像
Miscellaneous colormapsの画像

参考

Choosing Colormaps in Matplotlib — Matplotlib 3.7.1 documentation

コメント