Too many points on x-axis

5 vues (au cours des 30 derniers jours)
Karl
Karl le 4 Juin 2013
If you run the following script, Matlab uses 0.5 increments on the x-axis. This gives the wrong label, since it starts over again after 6 points on the x-axis. Does anybody know how to make sure that the increments are made so that the labels get correct?
test= rand(11,8,6);
test2=test
Alder = {'<20', '2029','3039','4049','5059','6069','>70', 'all'};
Aar = {'2011', '2012', '2013_1', '2014_1', '2014_s2', '2014_s5'};
nAlder = length(Alder);
nAar = length(Aar);
figure
hold on
for iAlder = 1:nAlder
plot(squeeze(test2(11,iAlder,:)));
set(gca, 'XTickLabel',Aar)
end
hold off

Réponses (2)

Karl
Karl le 5 Juin 2013
Modifié(e) : Karl le 5 Juin 2013
Putting the following line between the plot-command line and the XTickLabel-command worked
set(gca, 'XTick',[1 2 3 4 5 6])
Does anybody know why Matlab uses 0.5 increments on the axis? Is this always a problem, so that one always has to use the extra command line listed above in cases like mine?
  2 commentaires
Iain
Iain le 5 Juin 2013
Matlab just runs through a set process for determining the tick values. If you have more than 6 x values, you'll see the tick locations change.
If you want specific tick locations, you need to specify them.
Karl
Karl le 5 Juin 2013
The funny thing is that there are only 6 values originally...

Connectez-vous pour commenter.


Jan
Jan le 5 Juin 2013
Perhaps this helps:
figure
data = squeeze(test2(11, :, :));
plot(1:length(Alder), data); % perhaps: data.'
set(gca, 'XTickLabel', Aar, 'XTick', 1:length(Alder))
  2 commentaires
Karl
Karl le 5 Juin 2013
The same problem appears when running your commands.
I think this illustrates the source of the problem:
test= rand(11,8,6);
figure
hold on
for i= 1:8
plot(squeeze(test(11,i,:)));
end
hold off
Try running the commands above. You will see that there are 11 x-axis "labels/points" with 0.5 increments, dispite that there are only y-vaules for 6 of these points. I think this is the source of the problem. When one uses XThickLabel and a 1x6 vector, it will be repeated after the 6th point/label in the original plot. The question is why Matlab does not make 6 points in the first place. Has it something to do with the test-matrix having 11 rows?
Iain
Iain le 5 Juin 2013
No. It simply comes up with what matlab reckons the best scaling is for the plot. It seems to try to ensure that there are BETWEEN 7 and 11 ticks.
Try:
for i = 1:30
figure
plot(randn(i,1))
end
You'll see what I mean.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Graphics Performance dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by