Re: [問題] 繪圖,雙重x軸,且兩條x軸有函數關係已回收

看板MATLAB作者 (回地球啦)時間15年前 (2010/11/02 05:47), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《laion (回地球啦)》之銘言: : 標題: [問題] 繪圖,雙重x軸,且兩條x軸有函數關係 : 時間: Mon Nov 1 20:39:56 2010 : : 我想要畫一張 f(T) vs 1/kT 的圖 : 其中k是常數 (Boltzmann's constant) : : 但是這樣的圖會很難閱讀T的值, : 所以想要在圖形的上方再加上一條x軸 : 因此每一個f(T)點,我都可以往下看到1/kT的值,以及往上看到T值 : : 我研究了很久, : 發現最接近的寫法是 : : figure; : : h11=plot(data(:,3),data(:,6),'s') : xlabel('1/kT (eV^{-1})'), ylabel('f(T)'); : ax1=gca; : set(ax1,'YLim',[-6,1],'XAxisLocation','bottom','YAxisLocation','left'); : box off; : ax2 = axes('Position',get(ax1,'Position'),'XAxisLocation','top',... : 'YAxisLocation','right','Color','none','XDir','reverse','XLim',... : [1500,3100],'YLim',[-6,1],'XColor','k','YColor','k'... : 'XScale','log'); : % 我試著用reverse x-axis 和log scale 來定義第二條x軸 : xlabel('T (K)','FontSize',12) : set(ax2,'XTick',[1500,1700, 1900, 2100,2300,2500,2700,2900, 3100]) : : %%%%%% : 但是這作法並沒有讓兩個x軸的數值有函數對應關係~ : 我發現隔壁實驗室使用的軟體有 'Xscale','inverse' 的選項, : (他們自己寫的軟體) : 可是matlab似乎沒有... : : 很多papers都有作出類似的圖,我不太相信像matlab那麼強大的工具卻反而畫不出來 : 有人有類似的經驗嗎? : 感謝賜教!! :) : : -- : 你知道嗎? : 最美的音樂 : 是寂靜, : : 再來, : 才是巴哈。 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 82.6.100.139 : ※ 編輯: laion 來自: 82.6.100.139 (11/01 20:41) : ※ 編輯: laion 來自: 82.6.100.139 (11/01 20:42) : 推 Semisphere:ax2的XDir不要reverse,直接用ax1的XTick 11/01 23:11 : → Semisphere:讀取XTick計算每個1/k/XTick,轉字串至ax2的XTickLabel 11/01 23:14 感謝S大回覆 問題解決了~ 我稍微改了一下 把修改過的程式貼過來, 有類似問題的人可以參考~ figure; h11=plot(data(:,3),data(:,6),'s','Color','k','MarkerFaceColor','b','MarkerEdgeColor','b','MarkerSize',7) xlabel('1/kT (eV^{-1})','FontSize',12), ylabel('lnD','FontSize',12); ax1=gca; set(ax1,'XColor','k','YColor','k','YLim',[-6,1],'XAxisLocation','bottom', 'YAxisLocation','left'); box off; tick = [3000:-500:1500]; tick2 = 1./(tick .* k); %k=constant ax2 =axes('Position',get(ax1,'Position'),'XAxisLocation','top', 'YAxisLocation','right',... 'Color','none','XLim',get(ax1,'XLim'),'XTick',tick2,'XTickLabel',sprintf('%3.0f|',tick),... 'YTick',[]) xlabel('T (K)','FontSize',12) -- 你知道嗎? 最美的音樂 是寂靜, 再來, 才是巴哈。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.232.229.140

11/02 11:57, , 1F
data一換,XLim所包涵範圍就會與設定的tick不一樣,
11/02 11:57, 1F

11/02 11:59, , 2F
這樣不同資料還要手動改tick有點麻煩,純粹看源碼猜測
11/02 11:59, 2F

11/02 18:53, , 3F
我試了直接使用ax1的XTick,可是換算到ax2的後標籤不太美觀
11/02 18:53, 3F

11/02 18:54, , 4F
會像1529之類不好看的數字~ 所以我改成3000:-500:1500
11/02 18:54, 4F

11/02 18:55, , 5F
雖然需要手動 可是比較美觀~
11/02 18:55, 5F

11/02 19:02, , 6F
先撇開程式,實驗上也是先知道T才算kT,所以T的範圍是已知的
11/02 19:02, 6F

11/02 19:02, , 7F
幸運囉~~ :p
11/02 19:02, 7F
文章代碼(AID): #1CppLcH6 (MATLAB)
文章代碼(AID): #1CppLcH6 (MATLAB)