Label x-axes by fraction

6 vues (au cours des 30 derniers jours)
Astrik
Astrik le 30 Nov 2016
Modifié(e) : dpb le 30 Nov 2016
I am trying to graph a simple plot. The y-axis should be a vector of 19*1 with different values. My x-axis should be the numbers from 1/20 to 1/2 in ascending order. I would like to lable them as '1/2', '1/3'...'1/20'. How can I do that? I used the code
ax=gca
ax.XTick=[flip(1./(2:20))]
ax.XTickLabel={'1/2','1/3','1/4','1/5','1/6','1/7','1/8','1/9','1/10','1/11','1/12','1/13',...;
'1/14','1/15','1/16','1/17','1/18','1/19','1/20'}
plot(ax.XTick,FE(:,5)) or plot(ax.XTickLabel,FE(:,5))
I do not know how to plot using the ax.XTick,ax.XTickLabel and my 19*1 vector that is in my workspace. Any help will be appreciated.

Réponse acceptée

dpb
dpb le 30 Nov 2016
Modifié(e) : dpb le 30 Nov 2016
Plot first, then set axis properties to other than default ones...
XTicks=flip(1./(2:20));
XTickLabel=flip({'1/2','1/3','1/4','1/5','1/6','1/7','1/8','1/9','1/10','1/11','1/12','1/13',...;
'1/14','1/15','1/16','1/17','1/18','1/19','1/20'});
plot(XTicks,FE(:,5))
ax.XTick=XTicks
ax.XTickLabel=XTickLabel
Must flip the labels to match the order of the tick array.
Also, NB: Undoubtedly you'll find that the tick marks at the LH edge of the axis will be too close together to be able to have every one labeled--you'll have to pick a subset of every 2nd or 3rd for those until the spacing is large enough they don't overlap.
Also NB(2): :)
You can generate the labels programmatically rather than having to write the string out manually...
XTickLabels=num2str([2:20].','1/%d');
Note here that the vector must be a column vector to put the individual elements into rows in the text array; otherwise they'll all be run together on a long line that won't work well at all...

Plus de réponses (0)

Catégories

En savoir plus sur Labels and Styling dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by