如何在Octave中基于共同时间列绘制B与C的2D图(含两种需求)
绘图需求解决方案
数据集
| Column A(时间) | Column B | Column C |
|---|---|---|
| 2020-10-26 00:07:20 | 0.68 | 0.0 |
| 2020-10-26 00:12:20 | 0.77 | 0.1 |
| 2020-10-26 00:37:20 | 1.1 | 1.2 |
| 2020-10-26 01:27:20 | 0.51 | 0.0 |
| 2020-10-26 03:42:21 | 0.9 | -0.3 |
| 2020-10-26 04:42:21 | -1.3 | 0.3 |
需求说明
已知已通过 plotyy(A,B,A,C) 生成双Y轴单X轴图表,现需实现以下两种绘图需求:
- 绘制B与C的关系图,将Column A作为第二Y轴
- 绘制随时间变化的B与C的关系图,且不显示第二Y轴
解决方案代码
需求1:B vs C 关系图(Column A为第二Y轴)
首先需将时间列转换为MATLAB可处理的数值格式(如datenum),再创建双Y轴关联图表:
% 导入数据 A = {'2020-10-26 00:07:20'; '2020-10-26 00:12:20'; '2020-10-26 00:37:20'; ... '2020-10-26 01:27:20'; '2020-10-26 03:42:21'; '2020-10-26 04:42:21'}; B = [0.68; 0.77; 1.1; 0.51; 0.9; -1.3]; C = [0.0; 0.1; 1.2; 0.0; -0.3; 0.3]; % 时间转数值格式 A_num = datenum(A); % 创建双Y轴:X轴为C,左Y轴为B,右Y轴为时间 [ax, h1, h2] = plotyy(C, B, C, A_num); % 配置轴标签与格式 ylabel(ax(1), 'Column B'); ylabel(ax(2), 'Column A(时间)'); datetick(ax(2), 'y', 'HH:mm:ss'); % 可按需调整时间显示格式 xlabel('Column C'); % 图例与标题 legend([h1, h2], {'Column B', 'Column A'}, 'Location', 'best'); title('B vs C 关系图(时间为第二Y轴)');
需求2:随时间变化的B与C关系图(无第二Y轴)
以时间为X轴,同时绘制B、C曲线,隐藏右侧Y轴即可:
% 沿用上述变量A_num、B、C % 创建双Y轴基础图表 [ax, h1, h2] = plotyy(A_num, B, A_num, C); % 隐藏第二Y轴 set(ax(2), 'Visible', 'off'); % 配置X轴时间格式与标签 datetick(ax(1), 'x', 'HH:mm:ss'); xlabel('时间(Column A)'); ylabel(ax(1), '数值'); % 区分两条曲线样式 set(h1, 'Color', 'r', 'LineStyle', '-'); set(h2, 'Color', 'b', 'LineStyle', '--'); % 图例与标题 legend([h1, h2], {'Column B', 'Column C'}, 'Location', 'best'); title('随时间变化的B与C关系图');
内容的提问来源于stack exchange,提问作者user1669504
相关产品推荐
相关产品推荐

