heatmap の使い方について
38 views (last 30 days)
Show older comments
現在、181行136列のデータ群Zをheatmapを用いてグラフを作成しています。
heatmap(Z)とすると、ヒートマップのx、yの値がデータ群のインデックスになってしまいます。(1~181,1~136)
x,yの値をそれぞれ‐90~90、‐90~45として表示したいのですが、方法はありますでしょうか。
0 Comments
Answers (1)
Atsushi Ueno
on 29 Nov 2023
> ヒートマップのx、yの値がデータ群のインデックスになってしまいます(1~181,1~136)
インデックス値の指定が無く自動作成されたからです。heatmap関数の事例を参考にカスタム軸を作成します。「xvalues/yvalues — x/y 軸に沿って表示される値」として数値配列の入力が可能なので、下記事例の様な使い方ができます。
181行136列だと軸ラベルがギュウギュウに詰まって表示されてしまうので、とりあえず-10~10の範囲を表示しました。
Z = rand(181,136); % 181行136列のデータ群Z
x = -90:90;
y = -90:45; % x,yの値をそれぞれ‐90~90、‐90~45として表示したい
heatmap(y,x,Z);
xlim([-10,10]);
ylim([-10,10]);
3 Comments
Akira Agata
on 30 Nov 2023
+1
heatmap だと @Atsushi Ueno さん回答のとおり「軸ラベルがギュウギュウに詰まって表示されて」しまいます。別の方法として、imagesc を使うというのはいかがでしょうか?ご参考までに以下に例を示します。
% サンプルデータ (181行136列)
I = imadjust(imgaussfilt(rand(181, 136), 5));
% X, Y軸の範囲
x = -90:90;
y = -90:45;
% 結果を表示
figure
imagesc(x, y, I)
colormap(sky) % heatmapとあわせるため
colorbar
ax = gca;
ax.YDir = "normal"; % Y軸の方向を通常どおりとするため(不要であれば削除して下さい)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!