作者honoYang (基督敵)
看板MATLAB
標題[心得] 座標軸上小數點刻度位數統一
時間Wed Jul 28 03:38:41 2010
總之試出來的一點東西
大家如果有需要就加減看吧
如果這是簡單的東西
那我就獻醜了...
-------------------------------------------------
-------------------------------------------------
例如我們想在Y軸上標上這樣的刻度
1.0
0.9
0.8
.
.
.
0.1
0.0
matlab會自動修改成
1
0.9
0.8
.
.
.
0.1
0
這時候我們會想說哇圖畫好了就好
可是哪知道
SHIT!!!
老師說刻度小數點一定要整齊漂釀
所以我就要來想辦法
首先要介紹兩個東西 很重要 一定要先記起來
第一個要介紹的是 YTick
這個東西的作用在於決定Y軸的刻度數目
因為基本上Y軸刻度的數目是matlab自己決定的
那為什麼我們要去改動他的刻度數目呢
這樣才能知道等一下我們自己生成的刻度要幾個
也就是說我們要清洗掉matlab在Y軸上的刻度
用string的格式貼到Y軸上
第二個就是YTickLabel
樓上是決定刻度數目
這個則是決定刻度內容
例如我們直接生成一個['0.0'; '0.1'; ...; '0.9'; '1.0'] 的字串
貼到Y軸上
這裡可以試試看如果不先決定刻度數目
而直接貼上刻度內容會變怎樣
eg:
x=1:100;
y=(sin(x)+1)/2; %y的範圍在0~1之間
plot(x,y);
set(gca,'YTickLabel',['0.00'; '0.25'; '0.50'; '0.75'; '1.00'])
結果就是你在matlab圖上看到的那樣
但如果改成我先決定Y軸上有幾個刻度 (上例是5個)
eg:
x=1:100;
y=(sin(x)+1)/2;
plot(x,y);
set(gca,'YTick' , linspace(0,1,5))
set(gca,'YTickLabel',['0.00'; '0.25'; '0.50'; '0.75'; '1.00'])
------------------------------------------------------------------
solution 1:
一開始參考網路上的做法
超麻煩簡直是在開玩笑
先寫檔再讀檔
以上面的例子為例
以下不再說明
直接貼程式碼了
假如我們需要10個刻度
x=1:100
y=(sin(x)+1)/2;
plot(x,y);
label = linspace(0,1,10);
f = fopen('test.txt', 'wt');
fprintf(f, '%0.2f\n', label )
fclose(f);
%讀取時不是用fscanf 原因不多說了 如果可以試得出來也告訴我吧
f = textread('test.txt','%s');
set(gca,'YTick' , label);
set(gca,'YTickLabel',f);
--------------------------------------------------------------------
solution 2:
媽媽樂
原來num2str也可以用 '%0.2f'這招
SHIT
書上沒寫啊
一開始如果直接看matlab的help就好了 唉
虛功
x=1:100
y=(sin(x)+1)/2;
plot(x,y);
label = linspace(0,1,10);
set(gca,'YTick' , label)
set(gca,'YTickLabel',num2str(label' , '%0.2f'))
-----------------------------------------------------------------------
--
"帥哥~~~來喔!!"
"\⊙▽⊙/ 來啊來啊"
"帥哥~~~抹呷啥???
"(  ̄ c ̄)y▂ξ 老闆娘 妳只想要我的錢
而不是我的身體"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.94.123
1F:推 Append:最後生字串的地方我推薦sprintf 是個萬能字串generator 07/28 16:54
2F:推 japing:推阿 08/02 17:34
3F:推 atubr:推! 01/04 17:29