作者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