customised x data in matlab plot

I have an x label ( starting from 0 in the axis - 1000, 2000, 3000, 4000, 50000, 6000)
I want to change the axis to the following starting from 0 in the axis - 2000, 4000, 6000, 8000, 10000, 12000
I have used the following implementation but not working
labels = [0 2000 4000 6000 8000 10000 12000];
disp(plot(X));
set(gca, 'XTick', 1:length(labels));
set(gca, 'XTickLabel', labels);
Can someone help me out with this
Thanks in advance

 Accepted Answer

The XTick property requires a vector with numeric data, but the XTickLabel property requires a cell array.
labels = [0 2000 4000 6000 8000 10000 12000];
disp(plot(X));
set(gca, 'XTick', 1:numel(labels));%this puts the labels at x=1,2,3,4,5,6,7
set(gca, 'XTickLabel', cellfun(@num2str,num2cell(labels));

8 Comments

Hi Rik
Thanks for your swift response. I am getting the error
Error using cellfun
Non-scalar in Uniform output, at index 2, output 1.
set 'UniformOutput' to false.
Error in nuss(line 35)
set(gca, 'XTickLabel', cellfun(@num2str,num2cell(labels)));
Thanks in advance
Tino
Hi Rik
I was able to put the Uniform output false.
But when the plot the graph the numbers all clustered to the axis of the x axis. what is the issue ?
Hope to hear from you soon
Regards
Tino
Sorry for the typo (missing the UniformOutput).
If you only set the XTick property, you don't actually need to set the label. It looked like you wanted to have the label '2000' show up at x=2, so my code does that for you.
So maybe this code is what you meant?
labels = [0 2000 4000 6000 8000 10000 12000];
disp(plot(X));
set(gca, 'XTick', labels);
%this is now optional:
set(gca, 'XTickLabel', cellfun(@num2str,num2cell(labels),'UniformOutput',0);
Thanks for your response Rik.
Am sorry maybe you did not understand my question
I want to 0 1000, 2000, 3000, 4000, 50000, 6000
0 2000, 4000, 6000, 8000, 10,000, 12,000
The numbers down to replace the number up in the graph
I hope this is clearer. where I have 1000, I want to make it 2000 and so on
Regards
Tino
So where the actual x-postition is 1000 you want to have the label say 2000 etc?
Hi Rik
That is exactly what I mean
where it is 1000 i want it to be 2000
and where it is 2000 I want it to be 4000 etc
Thanks for your help in advance
Regards
tino
Then you can use this:
labels_real = [0 1000 2000 3000 4000 5000 6000];
labels_fake = [0 2000 4000 6000 8000 10000 12000];
%or just:
%labels_real=0:1000:6000;
%labels_fake=0:2000:12000;
%or even:
%labels_real=0:1000:6000;
%labels_fake=labels_real/2;
disp(plot(X));
set(gca, 'XTick', labels_real);
%this is now optional:
set(gca, 'XTickLabel', cellfun(@num2str,num2cell(labels_fake),'UniformOutput',0);
Thank you Rik

Sign in to comment.

More Answers (0)

Products

Release

R2019a

Tags

Asked:

on 28 May 2019

Commented:

on 28 May 2019

Community Treasure Hunt

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

Start Hunting!