André
André

Reputation: 257

Logaritmic scale in x-axis

I have the following code:

S  = [100 200 500 1000 10000];
H = [0.14 0.15 0.17 0.19 0.28;0.14 0.16 0.18 0.20 0.29;0.15 0.17 0.19 0.21 0.31;0.16 0.17 0.20 0.22 0.32;0.23 0.22 0.28 0.30 0.44;0.23 0.23 0.29 0.3 0.5;0.33 0.32 0.4 0.42 0.63;0.32 0.31 0.39 0.40 0.61;0.23 0.23 0.30 0.30 0.50];
for i = 1:9
    hold on
plot(S, H(i,:));
legend('GHM01','GHM02','GHM03','GHM04','GHM05','GHM06','GHM07','GHM08','GHM09'); %legend not correctly
axis([100 10000 0.1 1])
end
set(gca,'xscale','log')

The x-axis looks like this: enter image description here

Because The S-values are very far from each other, I used a logaritmic x-axis (and linear y-axis). I have on the axis 5 values (see S), and I only want those 5 values visible on the x-axis with equidistant spacing between the values. How do I do this? Or is there a better alternative to display my x-axis, rather than logaritmic scale?

Upvotes: 1

Views: 81

Answers (1)

EBH
EBH

Reputation: 10440

If you want the X-axis ticks to be equally distant although they are not (neither on a linear nor on a log scale) then you basically treat this axis as categorical, and then it should get and ordinal temporary value (say 1:5) to determine the distance between them.

Here is a quick implementation of your comment above:

S  = {'100' '200' '500' '1000' '10000'};
H = [0.14 0.15 0.17 0.19 0.28;...
     0.14 0.16 0.18 0.20 0.29;
     0.15 0.17 0.19 0.21 0.31;
     0.16 0.17 0.20 0.22 0.32;
     0.23 0.22 0.28 0.30 0.44;
     0.23 0.23 0.29 0.3  0.5;
     0.33 0.32 0.4  0.42 0.63;
     0.32 0.31 0.39 0.40 0.61;
     0.23 0.23 0.30 0.30 0.50];
f = figure;
plot(1:length(S),H);
f.Children.XTick = 1:length(S);
f.Children.XTickLabel = S;

TMHO this is the most straightforward way to solve this problem ;)

Upvotes: 1

Related Questions