質問: 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のみが出るように)直したいのですが,どのようにすればよいのでしょうか.
回答: xy座標軸のように,y軸が下から1,2,...,100と並ぶように並べ替えたい (類似q&a) inverse y-axis heatmap - matlab answers - matlab central (mathworks.com) (解説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ラベルの表示を簡潔に直す