📊

Juliaにおけるheatmapの注意点

2023/06/13に公開

Plots.jlを用いてヒートマップを始めとする2変数のグラフを描写します. ヒートマップに配列を渡して描写する際, データの並び方向が間違っており, 全然違う結果になってしまうことがありました. 以前にも同じ間違いを経験しているので, これを機にメモを残しておきます.

パッケージ

初回の人は下記のコメントアウトを外してusing Pkg; Pkg.add("Plots")を実行してください. using Plotsは使用前に毎回実行します.

# using Pkg
# Pkg.add("Plots")
using Plots

描写方法

変数x,yとその点での値zをそれぞれ配列X, Y, Zとしてheatmapに渡すことで描写できます. 同様にsurface(X, Y, Z), contour(X, Y, Z), heatmap(X, Y, Z)なども使用できます.

X = 0:3
Y = 4:7
Z = [10*x+y for y in Y, x in X]
heatmap(X, Y, Z)

注意点

このとき, for y in Y, x in Xではなくfor x in X, y in Yと書いてしまうと, 次のように軸が逆の結果になってしまうので気を付けてください. 例えばx=3, y=4のときはz=34となり黄色でなければいけないはずですが, 黒紫になってしまっています。

X = 0:3
Y = 4:7
Z = [10*x+y for x in X, y in Y]
heatmap(X, Y, Z)

参考文献

Discussion