2015-11-03 91 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