Sadegh
Sadegh

Reputation: 412

Why matlab skips 2nd half of labels?

Here is a pretty streightforward code for displaying matrix in scaled color using imagesc command. The problem is that final figure has wrong labeling and doesnt show 2nd half of labels(it should be from 1 to 21, but it is from 1 to 10)

figure;
imagesc(magic(21));
set(gca,'XTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'})
set(gca,'YTickLabel',{'1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21'})

enter image description here

I am using Ubuntu 16.04 and Matlab 2016b.

Upvotes: 0

Views: 55

Answers (3)

Matt
Matt

Reputation: 2802

You have to assign locations for those ticks, not just add labels.

figure;
imagesc(magic(21));
ax1 = gca;
ax1.YTick = 1:21;
ax1.XTick = 1:21;
ax1.XTickLabels = {'One','Two','Three',...
ax1.YTickLabels = {'Red','Brown','Green',...

Also since Matlab 2014b Mathworks created a new graphics system. You can access your graphics as objects directly instead of using set and get everywhere.

Upvotes: 3

Ander Biguri
Ander Biguri

Reputation: 35525

You set up the label text, but not the location, thus it will automatically put label locations and then substitute their text.

To set up the locations of the labels, first do:

set(gca,'XTick',...)

Then you can write in those labels whatever you preffer:

set(gca,'XTickLabel',{'banana', 'platano', 'potato',... })

Upvotes: 7

NKN
NKN

Reputation: 6424

You can test this:enter image description here

imagesc(magic(21));
set(gca,'XLim',[1 21])
set(gca,'XTick',[1:1:21])
set(gca,'XTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'})
set(gca,'YLim',[1 21])
set(gca,'YTick',[1:1:21])
set(gca,'YTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'})

Upvotes: 1

Related Questions