You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定MATLAB生产成本趋势图中标记最大值与最小值

在MATLAB绘图中标记曲线的最大值与最小值

很简单,咱们只需要先定位到成本数据的最值点,再在图上用标记点+文本注释的方式突出显示就行。下面是完整的修改代码和步骤说明:

完整代码示例

% 原始绘图代码
plot(timevec,fuelCost,'-k'); grid on; 
xlabel('Time(days)'); 
ylabel('Amount of Money Spent ($)'); 
title({'Plant Production Cost';'01 April 2013 - 30 April 2013'});

% 新增:标记最值的核心代码
% 1. 找到成本的最大值、最小值,以及它们对应的时间索引
[maxCost, maxIdx] = max(fuelCost);
[minCost, minIdx] = min(fuelCost);

% 2. 在图上绘制显眼的标记点
plot(timevec(maxIdx), maxCost, 'r*', 'MarkerSize', 12); % 红色五角星标记最大值
plot(timevec(minIdx), minCost, 'bs', 'MarkerSize', 10); % 蓝色正方形标记最小值

% 3. 添加文本注释,清晰显示最值数值和对应日期
% 注意:+50/-50是文本相对于标记点的偏移量,你可以根据自己的数据范围调整
text(timevec(maxIdx), maxCost + 50, ...
    sprintf('Max: $%.2f\\nDay: %.0f', maxCost, timevec(maxIdx)), ...
    'Color', 'red', 'FontSize', 10);
text(timevec(minIdx), minCost - 50, ...
    sprintf('Min: $%.2f\\nDay: %.0f', minCost, timevec(minIdx)), ...
    'Color', 'blue', 'FontSize', 10);

关键步骤解释

  • 定位最值点:用MATLAB内置的max()和min()函数,一次性获取最值的数值和它们在数组中的索引,这样就能找到对应的日期timevec(maxIdx)和timevec(minIdx)。
  • 绘制标记点:用plot()函数单独绘制最值点,选择醒目的标记样式(比如红色星号、蓝色方块),并通过MarkerSize调整大小,确保一眼就能看到。
  • 添加文本注释:用text()函数在标记点附近添加格式化文本,sprintf()用来把数值和日期整合成清晰的字符串,偏移量(+50/-50)可以根据你的成本数据范围调整,避免文本挡住标记点。

可选优化

如果你的timevec是datetime类型(不是单纯的天数数字),可以把文本里的日期格式改成更直观的形式,比如:

sprintf('Max: $%.2f\\nDate: %s', maxCost, datestr(timevec(maxIdx), 'dd-mmm-yyyy'))

这样会显示类似Date: 15-Apr-2013的格式,更清晰。

另外,你还可以用annotation()函数添加箭头指向最值点,让标记更明确:

% 箭头坐标是归一化的(0-1范围),需要根据你的图调整位置
annotation('arrow', [0.35, timevec(maxIdx)/30], [0.75, maxCost/max(fuelCost)], 'Color', 'red');

内容的提问来源于stack exchange,提问作者MiVi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:32:55