一、三类进阶折线图适用场景
1. 超长时间序列折线图:时间跨度大,趋势为王
超长时间序列折线图的适用场景
当你的数据覆盖数年甚至数十年,且希望观察宏观变化趋势时,超长时间序列折线图是理想选择。例如:
-
某地区近20年气温的年均变化;
-
公司10年来的年度营业额走势。
举个例子:
你想了解过去20年北京的年均温度有没有变化?可以用超长时间序列折线图来展示,X轴是年份,Y轴是温度。把每年的温度连接成线,一眼就能看出是否变暖。如果整体是缓慢上升,那说明:变暖是真的!
适用场景总结
-
展示跨年级别的数据趋势
-
分析宏观变化(气候、经济、人口等)
-
数据密集时更突出整体走势
-
**注:**数学建模类比赛遇到超多数据时,也可以看情况选择此类折线图
2. 双坐标轴折线图:对比两种不同量纲的数据
双坐标轴折线图的适用场景
当你有两组单位不同、数量级不同的数据需要一起比较时,双坐标轴折线图能让两者在同一张图上清晰展示。例如:
-
月平均温度和月降水量的比较;
-
企业广告支出和销售额的比较。
举个例子:
你想看看广告支出和销售额有没有关系?可以画一个双坐标轴图,左边Y轴是广告费,右边Y轴是销售额,X轴是月份。如果发现两条线同时上涨,那可能意味着:钱没白花,广告见效了!
适用场景总结
-
两组数据量纲差异大,无法放在同一Y轴
-
强调变量间的同步性或关联性
-
避免图形失真或误导
3. 与柱形图结合的折线图:一图呈现两种信息
与柱形图结合的折线图的适用场景
当你需要同时展示总量(柱形)和趋势(折线)时,这种组合图表非常有用。例如:
-
每月销售额(柱)与毛利率(线);
-
访问人数(柱)与平均停留时长(线)。
举个例子:
你记录了全年每月的产品销售额,还想显示利润率的变化?柱子表示销售额,线表示毛利率。这样就能看出:卖得多的时候是不是也赚得多?
适用场景总结
-
数据包含"总量"和"比例"两种维度
-
同时可视化数量和趋势
-
让报表更直观、信息更丰富
你手上有什么数据? | 用哪种折线图? |
---|---|
跨度很长的时间序列(例:20年气温变化) | 超长时间序列折线图 |
两种单位不同的数据(例:广告支出 vs 销售额) | 双坐标轴折线图 |
一组总量数据 + 一组比例数据(例:销售额 + 毛利率) | 与柱形图结合的折线图 |
[### 三种进阶折线图类型总结] |
二、实现绘图前的数据检查
折线图类型 | 特别准备事项 |
---|---|
超长时间序列折线图 | 数据应按时间顺序排列,时间字段建议为数值或可识别的日期格式(如年份、日期) |
双坐标轴折线图 | 两组数据应有相同的X轴(如时间),并检查两组Y轴的量纲、数值范围差异是否合理 |
与柱形图结合的折线图 | 柱形图和折线图各自所需数据需齐全,注意变量类型(一个为总量,一个为比例或比率) |
[### 针对三种进阶折线图的数据需求] |
三、MATLAB绘制相应折现图
1. 超长时间序列折线图绘制
当你有一组时间跨度很大的数据(比如20年、30年),可以通过细化X轴并清晰设置时间标签,用基础 plot()
函数来展示全貌。
以下是相关代码实现:
Matlab
% 读取数据并保护中文列名
data = readtable('超长时间序列折线图数据.xlsx', 'Sheet', 'Sheet1', 'VariableNamingRule', 'preserve');
% 提取年份和年均气温
years = data.('年份');
temps = data.('年均气温');
% 创建白色背景图
figure('Color', 'w', 'Position', [100, 100, 1000, 500]);
% 绘制带圆点的折线图(对于大数据量建议去掉圆点或减小MarkerSize)
plot(years, temps, '-o', ...
'LineWidth', 1.5, ...
'MarkerSize', 3, ...
'MarkerFaceColor', [0.2, 0.6, 1]);
% 设置坐标轴标签和标题,使用宋体11号字体
xlabel('年份', 'FontName', '宋体', 'FontSize', 11);
ylabel('年均气温 (℃)', 'FontName', '宋体', 'FontSize', 11);
title('1825-2024年年均气温变化', 'FontName', '宋体', 'FontSize', 11);
% 设置X轴刻度(每10年一个)
xticks(min(years):10:max(years));
% 设置坐标轴字体
set(gca, 'FontName', '宋体', 'FontSize', 11);
% 美化图形
grid on;
box on;
set(gca, 'LineWidth', 1);
axis tight;
折线图实现:

2. 双坐标轴折线图绘制
当你有两组具有不同单位或量纲的数据(例如"气温"和"降水量"),就可以使用双坐标轴折线图。MATLAB 提供的 yyaxis
函数可以让我们在同一张图中展示左右两侧不同的纵坐标轴。
以下是相关代码实现:
Matlab
% 读取数据并保护中文列名
data = readtable('双坐标轴折线图数据.xlsx', 'Sheet', 'Sheet1', 'VariableNamingRule', 'preserve');
% 提取数据
years = data.('年份');
temps = data.('年均气温');
precip = data.('年降水量');
% 创建图形窗口(高分辨率)
figure('Color', 'w', 'Position', [100, 100, 1100, 500]);
% 设置统一字体为宋体
set(groot, 'defaultAxesFontName', '宋体');
set(groot, 'defaultAxesFontSize', 11);
% 左坐标轴:气温
yyaxis left
p1 = plot(years, temps, '-', ...
'Color', [0.2, 0.45, 0.85], ...
'LineWidth', 2);
ylabel('年均气温 (℃)', 'Color', [0.2, 0.45, 0.85], ...
'FontName', '宋体', 'FontSize', 11);
% 右坐标轴:降水量
yyaxis right
p2 = plot(years, precip, '--', ...
'Color', [1, 0.4, 0.2], ...
'LineWidth', 2);
ylabel('年降水量 (mm)', 'Color', [1, 0.4, 0.2], ...
'FontName', '宋体', 'FontSize', 11);
% 标签设置
xlabel('年份', 'FontName', '宋体', 'FontSize', 11);
title('年均气温与年降水量趋势(样本数据)', 'FontName', '宋体', 'FontSize', 12);
% 坐标轴样式
xticks(years);
xtickangle(45);
xlim([min(years) max(years)]);
grid on;
set(gca, 'GridColor', [0.85 0.85 0.85], 'GridAlpha', 0.6);
box on;
set(gca, 'LineWidth', 1.2);
% 图例设置
legend([p1, p2], {'年均气温', '年降水量'}, ...
'Location', 'southoutside', ...
'Orientation', 'horizontal', ...
'Box', 'off', ...
'FontName', '宋体', ...
'FontSize', 10);
折线图实现(ps:一开始生成的图比较丑,可以手动调整到合适的样子):

3. 与柱形图结合的折线图绘制
当你有两组相关的数据(例如,年均气温 与年降水量 ),并且你希望同时展示这两个数据集的趋势与具体数值时,可以使用折线图与柱形图结合的方法。折线图用来展示数据的变化趋势,而柱形图则提供了数据的具体量,二者结合可以使图形更具表现力。在MATLAB中,你可以通过yyaxis
函数来绘制双坐标轴图,这样可以分别控制左坐标轴和右坐标轴。左坐标轴可以用于展示折线图,右坐标轴则用于展示柱形图。
以下是代码示例:
Matlab
% 读取数据并保护中文列名
data = readtable('双坐标轴折线图数据.xlsx','Sheet', 'Sheet1', 'VariableNamingRule', 'preserve');
% 提取数据
years = data.('年份');
temps = data.('年均气温');
precip = data.('年降水量');
% 创建图形窗口(高分辨率)
figure('Color', 'w', 'Position', [100, 100, 1100, 500]);
% 设置统一字体为中文宋体
set(groot, 'defaultAxesFontName', '宋体');
set(groot, 'defaultAxesFontSize', 12);
% 左坐标轴
yyaxis left
h1 = plot(years, temps, '-o', ...
'Color', [0.4, 0.7, 1], ...
'LineWidth', 2, 'MarkerSize', 8, 'MarkerEdgeColor', [0.4, 0.7, 1], ... % 蓝色边框
'MarkerFaceColor', 'none');
% 添加折线图数据标签
for i = 1:length(temps)
text(years(i), temps(i), num2str(temps(i)), 'FontSize', 10, 'Color', 'k', ...
'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'center');
end
ylabel('年均气温 (℃)', 'Color', [0.4, 0.7, 1], ...
'FontName', '宋体', 'FontSize', 12);
% 右坐标轴:降水量(柱形图)
yyaxis right
h2 = bar(years, precip, 'FaceColor', [0.2, 0.6, 0.8], ...
'EdgeColor', 'none', 'BarWidth', 0.6, 'FaceAlpha', 0.4);
% 设置右坐标轴颜色与柱形图一致
set(gca, 'YColor', [0.4, 0.7, 1]); % 设置整个右坐标轴的颜色
ylabel('年降水量 (mm)', 'Color', [0.4, 0.7, 1], ...
'FontName', '宋体', 'FontSize', 12);
% 设置标签
xlabel('年份', 'FontName', '宋体', 'FontSize', 12);
title('年均气温与年降水量趋势(样本数据)', 'FontName', '宋体', 'FontSize', 14);
% 设置坐标轴
xticks(years);
xtickangle(45);
xlim([min(years) max(years)]);
grid on;
set(gca, 'GridColor', [0.85 0.85 0.85], 'GridAlpha', 0.5);
box on;
set(gca, 'LineWidth', 1.2);
% 图例设置
legend([h1, h2], {'年均气温(折线图)', '年降水量(柱形图)'}, ...
'Location', 'southoutside', ...
'Orientation', 'horizontal', ...
'FontName', '宋体', 'FontSize', 12, ...
'Box', 'off');
折线图实现:

希望这些示例能为你今后的数据分析、教学展示或科研图表制作提供实用参考。如果你有任何问题或想法,欢迎留言交流,一起精进可视化表达的技巧!