Re: [心得] 座標軸上小數點刻度位數統一
請問這樣固定有效位數的方法,能否運用在等高線上呢?
------------------以下為程式碼---------------------
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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章