作者APPLEinPTT (apple)
看板MATLAB
标题Re: [心得] 座标轴上小数点刻度位数统一
时间Sat Apr 28 11:37:30 2012
请问这样固定有效位数的方法,能否运用在等高线上呢?
------------------以下为程式码---------------------
X,Time,NE都是500x61的矩阵
cmat=contour(X,Time,NE,[16.7526,17.6026,18.0276,19.5151]);
clabel(cmat,[16.7526,17.6026,18.0276,19.5151]);
---------------------------------------------------
画在图上後,等高线值都只显示到个位数,小数点以後都看不到
有什麽办法可以解决呢?用科学记号或固定小数位数都可以
要怎麽改clabel上的格式呢?
谢谢
※ 引述《honoYang (基督敌)》之铭言:
: 总之试出来的一点东西
: 大家如果有需要就加减看吧
: 如果这是简单的东西
: 那我就献丑了...
: -------------------------------------------------
: -------------------------------------------------
: 例如我们想在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'))
: -----------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.25.107