5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【matplotlib】3次元ヒートマップを作る方法

Last updated at Posted at 2021-12-31

概要

matplotlibで3次元ヒートマップを作る方法を紹介します。3次元空間に別の次元、例えば温度の次元を加えたりする場合に役立つと思います。
Google Colabで作成したコードは、こちらにあります。

手順

  1. 各種インポートします。(各モジュールの実行時のversionは、Google Colab内で作成したコードにあります。)
  2. 3次元ヒートマップを作ります。

1. 各種インポート

各種インポート
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from matplotlib import colors

各モジュールの実行時のversionは、Google Colab内で作成したコードこちらにあります。

2. 3次元ヒートマップを作成

3次元ヒートマップ
# 3次元ヒートマップ
fig = plt.figure(figsize=(13, 10))
ax = fig.add_subplot(111, projection='3d')

# プロット内容
x = np.arange(0, 100, 1)
y = np.arange(0, 100, 1)
X, Y = np.meshgrid(x, y)
Z = 0.01*(X*np.sin(0.1*X) + Y*np.cos(0.1*Y))
# heatmapの内容
myheatdata = np.sin(0.15*X) + np.cos(0.15*Y)
# heatmapの内容をfacecolors用に[0-1]に正規化
norm = colors.Normalize(vmin=np.min(myheatdata), vmax=np.max(myheatdata))
norm_myheatdata = norm(myheatdata)
# プロット
surf = ax.plot_surface(X, Y, Z,
                       facecolors=cm.CMRmap(norm_myheatdata),
                       cmap=plt.get_cmap('CMRmap')
                       )
# 軸ラベル
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
# カラーバーを表示(カラーバーに使う目盛は正規化前のheatdataの尺度で表示する)
m = cm.ScalarMappable(cmap=surf.cmap, norm=norm)
m.set_array(myheatdata)
fig.colorbar(m, shrink=0.6, label='myheatdata')
plt.show()

出力結果
3dheatmap.png

まとめ

matplotlibで3次元ヒートマップを作る方法を紹介しました。
3次元ヒートマップを作る場面は少ないと思いますが、誰かの役に立てれば幸いです。

参考資料

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?