How to change XTick Labels in a heatmap

190 ビュー (過去 30 日間)
Stefanie Aebi
Stefanie Aebi 2018 年 1 月 25 日
コメント済み: md mamunur rashid 2018 年 8 月 10 日
Hello I am trying to Change the X ticklabels of a heatmap plot. Apparently, the normal procedure over "xticklabels" is not supported for heatmaps. So I tried out a Workaround, which still has a bug. This is the example:
figure;
heatmap(my_matrix, 'Colormap', colorMap, 'ColorbarVisible', 'on', 'XLabel', 'Time', 'YLabel', 'September')
ax = gca;
axp = struct(ax);
axp.Axes.XTickLabel = num2cell(0:23)
This works in the first go, however if I then change the size of my figure (i.e. I expand to full screen), the X ticklabels return back to their original values (which is 1:24). I have also tried to adapt axp.XAxis.TickLabels, which has the same result. Could you give me a hint on what to do?

採用された回答

Sean de Wolski
Sean de Wolski 2018 年 1 月 25 日
編集済み: Sean de Wolski 2018 年 1 月 25 日
The tick labels are deceptively called *data.
figure;
my_matrix = rand(3);
heatmap(my_matrix, 'Colormap', parula(3), 'ColorbarVisible', 'on', 'XLabel', 'Time', 'YLabel', 'September')
ax = gca;
ax.XData = ["Hello" "World" "Thursday"]
Or simply
heatmap(etc..., 'XData', ["Hello" "World" "Thursday"])
  2 件のコメント
Stefanie Aebi
Stefanie Aebi 2018 年 1 月 25 日
Thanks a lot, that perfectly solves the problem.
md mamunur rashid
md mamunur rashid 2018 年 8 月 10 日
thanks for your answer

サインインしてコメントする。

その他の回答 (1 件)

Brendan Hamm
Brendan Hamm 2018 年 1 月 25 日
A heatmap stores the labels in the XDisplayLabels property. It is not a matlab.graphics.axis.Axes, but rather a matlab.graphics.chart.HeatMap which contains a hidden Axes. There is a reason you get the warning when you pass ax to struct and this is because you are seeing undocumented properties which you are not really meant to interact with. If you see this, you should probably be looking for a documented way of doing this, such as looking at the properties using:
properties(ax)
Here we see the documented property XDisplayLabels, and changing this gives the desires result.
ax.XDisplayLabels = num2cell(0:23);
So the moral of the story is that undocumented stuff is nice when you have no other options ... but this should be the last resort!

カテゴリ

Help Center および File ExchangeData Distribution Plots についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by