ヒートマップの配列の並び替え
29 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Kato Yusuke
le 14 Août 2021
Commenté : Kato Yusuke
le 15 Août 2021
heatmap関数を用いて,2変数関数z = x^2 + y^2のヒートマップを2次元平面上に構成したいのですが,
[X,Y] = meshgrid(1:1:100);
Z =X.^2 + Y.^2;
heatmap(Z)
とすると,
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/711512/image.jpeg)
のように,y軸の値が上から下の順に1,2,..., 100と並んでしまいます.
xy座標軸のように,y軸が下から1,2,...,100と並ぶように並べ替えたいのですが,やり方がわかりません.
またx,yラベルの表示ももう少し簡潔に(全ての数字ではなく1,20,40,60,80,100のみが出るように)直したいのですが,どのようにすればよいのでしょうか.
0 commentaires
Réponse acceptée
Atsushi Ueno
le 14 Août 2021
Modifié(e) : Atsushi Ueno
le 14 Août 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ラベルの表示を簡潔に直す
Plus de réponses (1)
Shunichi Kusano
le 15 Août 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]);
Voir également
Catégories
En savoir plus sur データ分布プロット dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!