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

MATLAB提取.fig折线图X/Y数据遇GraphicsPlaceholder类报错怎么解决?

报错原因

直接通过Children属性逐层取对象的方式依赖图形元素的堆叠顺序,坐标轴的子对象除了折线之外,还可能包含占位符、图例、文本标注、标题等非折线类图形对象,你取到的ln是matlab.graphics.GraphicsPlaceholder类的占位对象,本身没有XData属性,因此触发报错。

解决方法

使用findobj指定类型筛选目标对象,避免因元素顺序不对取错对象:

单条折线提取代码

fig = openfig('graphA.fig');
% 精准定位图中的坐标轴对象
ax = findobj(fig, 'Type', 'axes');
% 筛选坐标轴下所有折线类对象
ln = findobj(ax, 'Type', 'line');

% 提取数据,若只有一条折线可直接取值
X = ln.XData;
Y = ln.YData;

多条折线提取代码

如果图中包含多条折线,ln会返回对象数组,可通过循环批量提取所有折线的数据:

fig = openfig('graphA.fig');
ax = findobj(fig, 'Type', 'axes');
ln = findobj(ax, 'Type', 'line');

% 循环存储所有折线的XY数据
X_all = cell(length(ln), 1);
Y_all = cell(length(ln), 1);
for k = 1:length(ln)
    X_all{k} = ln(k).XData;
    Y_all{k} = ln(k).YData;
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:08