2015-11-03 149 views
1

我使用下面的MATLAB代碼繪製如下圖形,將吞吐率對時間和接收光功率與時間:我需要在2個次要情節

figure 
a1=subplot(2,1,1) 
plot(t_warp,tp_warp,'-bo','Linewidth',1); 
ylim([0,30]) 
datetick('x',13) 
xlabel('Time [02-11-2015] '); 
ylabel('TP (54Mbps) '); 
grid on; 

a2=subplot(2,1,2) 
errorbar(t_warp,rx_pow_warp,rx_err_warp,'-rd','Linewidth',1); 
ylim([-30,-75]) 
datetick('x',13) 
xlabel('Time [02-11-2015] '); 
ylabel('Received power (dBm) with deviaton '); 
grid on; 

enter image description here

  1. 我如何可以同步X軸上有兩個時間戳?在上面生成的圖形中,X軸時間戳不在圖形之間同步。編輯:使用linkaxes([a1,a2],'x'),兩個時間戳同步。
  2. 如何設置時間的X軸限制?即14:00:00-23:00:00,每隔一小時顯示一段時間。

編輯:

figure 

a1=subplot(2,1,1) 
plot(t_warp,tp_warp,'-bo','Linewidth',1); 
space = 0.05*(max(t_warp)- min(t_warp)); 
xlim([min(t_warp)-space, max(t_warp)+space]) 
set(gca,'xTick',min(t_warp):0.1:max(t_warp)) % SHOW INTERMEDIATE POINT IN X axis 
set(gca,'xTickLabel',min(t_warp):0.1:max(t_warp)) 

ylim([0,30]) 
set(gca,'yTick',0:1:30) 
datetick('x',13) 
xlabel('Time [02-11-2015] '); 
ylabel('TP '); 
grid on; 


a2=subplot(2,1,2) 
errorbar(t_warp,rx_pow_warp,rx_err_warp,'-rd','Linewidth',1); 
space = 0.05*(max(t_warp)- min(t_warp)); 
% xlim([min(t_warp)-space, max(t_warp)+space]) 
set(gca,'xTick',min(t_warp):0.1:max(t_warp)) % SHOW INTERMEDIATE POINT IN X axis 
set(gca,'xTickLabel',min(t_warp):0.1:max(t_warp)) 
ylim([-70,-55]) 
set(gca,'yTick',-70:1:-55) 
datetick('x',13) 
%axis tight 
xlabel('Time [02-11-2015] '); 
ylabel('Received power (dBm) with deviaton '); 
grid on; 

linkaxes([a1,a2],'x') 

格拉夫獲得:enter image description here

問:還是2個圖的X軸不從14:00:00開始?以及如何解決這兩個圖的X軸上相同的邊距?

+0

您可以根據您使用ylim使用XLIM([])......像 'XLIM( [0.9 * min(t_warp),1.1 * max(t_warp)])'在兩個子圖中。這兩個地塊的網格是相似的... – horseshoe

+0

它的工作原理。謝謝。使用0.9和1.1的邏輯是什麼? – HaWa

+1

@horseshoe自從OP提到您的評論爲正在運行之後,請考慮將其作爲答案。這有利於您獲得一些聲譽,因此減少了未回答的問題。 – Adriaan

回答

1

相關我剛纔提出的意見,你可能想使用xlim作爲

xlim([min(t_warp), max(t_warp)]) 

,如果你想將數據不直接在軸啓動,並有一定的空間之間,你可以在做下面的方式...

[floor(min(...)) ceil(max(...))] 

或...

relspace = 0.05; 
absspace = relspace*(max(t_warp)- min(t_warp)); 
xlim([min(t_warp)-absspace , max(t_warp)+absspace]) 

磨片使用您的數據範圍,重新設置relspace與軸的距離。

+0

使用你的方法我重繪了圖表,但是我在編輯部分已經附加了。 – HaWa

0

我調整了上面的例子 您可以使用

ticks = (get(gca,'Xtick')); 

從你的第一張圖的tixks,然後你可以在第二張圖

set(gca,'Xtick',ticks) 

應該解決它插入。您可能還需要轉換器具日期爲若干個爲xlim 下面一個較長的例子...

close all 
clear all 

t = datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z'); 
t2 = t+100; 
t3 = t+300; 

subplot 311 
plot(t:t2,rand(size(t:t2))) 
xlim([datenum(min(t)), datenum(max(t2,t3))]) 
ticks = (get(gca,'Xtick')); 
grid on 

subplot 312 
plot(t:t3,rand(size(t:t3))) 
grid on 

subplot 313 
plot(t:t3,rand(size(t:t3))) 
xlim([datenum(min(t)), datenum(max(t2,t3))]) 
set(gca,'Xtick',ticks) 
grid on