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='gray'
とすればOK
画像データは1チャネルにしておきましょう
plt.imshow(img_array[:, :, 0], cmap='gray')

他のcmap
ではこんな感じになる
気持ち悪い…笑
plt.imshow(img_array[:, :, 0], cmap='summer')

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()

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()

ax.plot_surface(X,Y,z, cmap='jet')

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







参考
Choosing Colormaps in Matplotlib — Matplotlib 3.7.1 documentation
コメント