【问题标题】:Two data sets with time series plot on one graph in matlab在matlab中的一张图上绘制两个带有时间序列图的数据集
【发布时间】:2018-07-16 08:52:46
【问题描述】:

enter image description here这里我有两个带有时间序列的数据集。我想通过使用 matlab 将两个数据集绘制在一个图中,我试图绘制它并且它作为一个错误出现。你能帮我解决这个问题吗? 这里我上传代码:

x={'6:15','9:25 ','11:00 ','13:50 ','16:25','19:00 ','20:00 ','22:05 ','23:40 '}; %time
y=[141 95 149 85 135 63 111 115 287]                % values
time_out=datenum(x,'HH:MM');  %convert time to datenum
figure
plot(time_out,y,'.-')            
datetick('x','HH:MM')
hold on
x4={'6:58','9:50 ','11:45 ','13:40','15:45','17:40 ','18:35 ','22:15 ','00:08 '}; %time
y4=[116 118 252 142 159 185 162 130 204]                % values
out4=datenum(x4,'HH:MM');  %convert time to datenum
figure
plot(out4,y4,'.-')            
datetick('x4','HH:MM')

我的图表也不正确。

【问题讨论】:

  • 最后一行datetick('x4','HH:MM') -> datetick('x','HH:MM')
  • 感谢您的回复,我试了一下,一张图有两张图。但我的第二张图不正确。因为我的时间是凌晨 12.08 值是去其他角落。在这里我附上图片链接...([1]:i.stack.imgur.com/8TTuC.png)我需要将最后一次值放入图的另一侧。你能给我一些解决这个问题的建议吗?
  • 只需将 x4 和 y4 中的最后一个值移动到数组的开头即可。

标签: matlab plot


【解决方案1】:

要么删除第二个图,要么提供一个明确的图 id。 我更喜欢后者,以防止弹出大量窗口:

x={'01:6:15','01:9:25 ','01:11:00 ','01:13:50 ','01:16:25','01:19:00 ','01:20:00 ','01:22:05 ','01:23:40'}; %time
y=[141 95 149 85 135 63 111 115 287];                % values
time_out=datenum(x,'dd:HH:MM');  %convert time to datenum
figure(1); clf; hold on;
plot(time_out,y,'.-')            

x4={'01:6:58','01:9:50 ','01:11:45 ','01:13:40','01:15:45','01:17:40','01:18:35','01:22:15','02:00:08'}; %time
y4=[116 118 252 142 159 185 162 130 204];                % values
out4=datenum(x4,'dd:HH:MM');  %convert time to datenum
figure(1); %just in case you created a second figure somewhere inbetween
plot(out4,y4,'.-')            
datetick('x','HH:MM')

【讨论】:

  • 感谢您的回复,我试了一下,一张图有两张图。但我的第二张图不正确。因为我的时间是凌晨 12.08 值是要去其他角落。在这里我附上图片链接...([1]:i.stack.imgur.com/8TTuC.png)我需要最后一次的价值到图的另一边。你能给我一些解决这个问题的建议吗?
  • 如果您只是想针对此特定问题解决此问题,我只需将您的第二次 - 轴更改为 x4={'6:58','9:50 ','11:45 ','13:40','15:45','17:40 ','18:35 ','22:15 ','24:08 '}; 会更好一点,但是如果您在时间中包括一天 -矢量:x={'00:6:15','00:9:25 ','00:11:00 ','00:13:50 ','00:16:25','00:19:00 ','00:20:00 ','00:22:05 ','00:23:40'}; %time y=[141 95 149 85 135 63 111 115 287]; % values time_out=datenum(x,'dd:HH:MM'); %convert time to datenum
【解决方案2】:

只需避免额外的figure 命令。

figure
plot(time_out,y,'.-')            
datetick('x','HH:MM')
hold on
x4={'6:58','9:50 ','11:45 ','13:40','15:45','17:40 ','18:35 ','22:15 ','00:08 '}; %time
y4=[116 118 252 142 159 185 162 130 204]                % values
out4=datenum(x4,'HH:MM');  %convert time to datenum
plot(out4,y4,'.-')            
datetick('x4','HH:MM')

【讨论】:

  • 感谢您的回复,我试了一下,一张图有两张图。但我的第二张图不正确。因为我的时间是凌晨 12.08 值是去其他角落。在这里我附上图片链接,([1]:i.stack.imgur.com/8TTuC.png)我需要最后一次的值到图的另一边。你能给我一些解决这个问题的建议吗?
  • 把数据和时间放在一起,然后转换成datenum。
  • 我试过了,但图表不能正常显示。这里我上传代码day1= ['09/06/2018';'09/06/2018';'09/06/2018';'09/06/2018';'09/06/2018';'09 /06/2018';'09/06/2018';'09/06/2018';'10/06/2018'] x4={'6:58','9:50','11:45' ,'13:40','15:45','17:40','18:35','22:15','00:08'}; %时间 y4=[116 118 252 142 159 185 162 130 204]; ns = datenum(day1) + datenum(x4); ns = datenum(day1, 'dd/mm/yy') + datenum(x4, 'HH:MM') ;
  • 把日期和时间放在一个字符串中,像这样 'datenum('09/06/2018 6:58','dd/mm/yyyy HH:MM')' 如果你想把他们分别,'day1 = {'09/06/2018','09/06/2018','09/06/2018','09/06/2018','09/06/2018','09/ 06/2018','09/06/2018','09/06/2018','10/06/2018'} x4={'6:58','9:50','11:45', '13:40','15:45','17:40','18:35','22:15','00:08'};时间y4=[116 118 252 142 159 185 162 130 204]; ns = datenum([day1{1} x4{1}],'dd/mm/yyyyHH:MM');'
猜你喜欢
  • 2016-07-22
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多