ヒートマップの配列の並び替え
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Kato Yusuke
el 14 de Ag. de 2021
Comentada: Kato Yusuke
el 15 de Ag. de 2021
heatmap関数を用いて,2変数関数z = x^2 + y^2のヒートマップを2次元平面上に構成したいのですが,
[X,Y] = meshgrid(1:1:100);
Z =X.^2 + Y.^2;
heatmap(Z)
とすると,
のように,y軸の値が上から下の順に1,2,..., 100と並んでしまいます.
xy座標軸のように,y軸が下から1,2,...,100と並ぶように並べ替えたいのですが,やり方がわかりません.
またx,yラベルの表示ももう少し簡潔に(全ての数字ではなく1,20,40,60,80,100のみが出るように)直したいのですが,どのようにすればよいのでしょうか.
0 comentarios
Respuesta aceptada
Atsushi Ueno
el 14 de Ag. de 2021
Editada: Atsushi Ueno
el 14 de Ag. de 2021
xy座標軸のように,y軸が下から1,2,...,100と並ぶように並べ替えたい
(解説1) plotの場合'YDir'プロパティを’Reverse’に設定出来ますが、heatmapには同プロパティがありません
(解説2) h.YDisplayData = flipud(h.YDisplayData); % 左記方法でやりたい事が実現します
x,yラベルの表示ももう少し簡潔に(全ての数字ではなく1,20,40,60,80,100のみが出るように)直したい
(MathWorks公式の類似Q&A) How can I modify the X and Y axis tick labels for a Heatmap chart?
(解説1) plotと違いheatmapのtickラベルは「全要素に対し文字列で定義」し、間引いて表示する事は出来ません
(解説2) 表示したくないtickラベルを空白にすれば透明な文字で表示される為、やりたい事が実現します
[X,Y] = meshgrid(1:1:100);
Z =X.^2 + Y.^2;
hm = heatmap(Z);
% y軸が下から順に並ぶように並べ替え
hm.YDisplayData = flipud(hm.YDisplayData);
% x,y-tickラベルの表示を簡潔に直す
CustomXLabels = string(X(1,:)); % Xの値からx-tickラベルに設定する文字列を作成
CustomYLabels = string(Y(:,1));
CustomXLabels(X(1,:) ~= 1 & mod(X(1,:),20) ~= 0) = " "; % 表示したくないtickラベルを空白にする
CustomYLabels(Y(:,1) ~= 1 & mod(Y(:,1),20) ~= 0) = " ";
hm.XDisplayLabels = CustomXLabels; % x-tickラベルの表示を簡潔に直す
hm.YDisplayLabels = CustomYLabels; % y-tickラベルの表示を簡潔に直す
Más respuestas (1)
Shunichi Kusano
el 15 de Ag. de 2021
解決済みのところ失礼いたします。
画像化だけであれば、imagesc関数使ってしまってもいいかと思いました。
[X,Y] = meshgrid(1:1:100);
Z =X.^2 + Y.^2;
imagesc(1:100,1:100,Z);
colormap hot;
colorbar;
axis xy;
daspect([1 1 1]);
Ver también
Categorías
Más información sobre データ分布プロット en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!