heatmap の使い方について
29 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
Categories
Find more on データ分布プロット in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!