Matlab 我需要在2个子批次中绘制吞吐量与时间和接收功率与时间的关系
我使用以下MATLAB代码绘制以下图表:Matlab 我需要在2个子批次中绘制吞吐量与时间和接收功率与时间的关系,matlab,plot,matlab-figure,Matlab,Plot,Matlab Figure,我使用以下MATLAB代码绘制以下图表: 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','
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;
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')
获得的图表:
问:两个图形的X轴仍然不是从14:00:00开始的?以及如何为两个图形在X轴上固定相同的边距?与我前面的评论相关,您可能希望使用
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
使用数据范围设置与轴的距离。我调整了上述示例
您可以使用
ticks = (get(gca,'Xtick'));
然后你可以在第二张图中插入它们
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
您可以像使用ylim一样使用xlim([])。。。。两个子批次中都有类似于
xlim([0.9*min(t\u扭曲),1.1*max(t\u扭曲)])
。然后,两个图的网格都是相似的……它可以工作。谢谢。使用0.9和1.1后面的逻辑是什么?@ OrthHooHe因为OP提到你的评论是工作的,请考虑回答它。这有利于你获得一些声誉,从而减少未回答的问题。使用你的方法,我重新绘制了图表,但我已附在编辑部分。