Label x-axes by fraction

6 ビュー (過去 30 日間)
Astrik
Astrik 2016 年 11 月 30 日
編集済み: dpb 2016 年 11 月 30 日
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.

採用された回答

dpb
dpb 2016 年 11 月 30 日
編集済み: dpb 2016 年 11 月 30 日
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...

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGrid Lines, Tick Values, and Labels についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by