从现有图中提取 MATLAB 图例字符串

Lau*_*eer 4 matlab matlab-figure

我一直在尝试从之前创建的图中获取一些数据,但我一直在与图例作斗争。我正在使用 MATLAB 2014b。

如果我之前使用以下方式设置我的情节:

h.fig   = figure();
h.ax    = axes(); hold all;
h.line1 = plot(0:0.01:2*pi(), sin(0:0.01:2*pi()));
h.line2 = plot(0:0.01:2*pi(), cos(0:0.01:2*pi()));
h.xlab  = xlabel('X');
h.ylab  = ylabel('Y');
h.leg   = legend('sin(x)', 'cos(x)');
Run Code Online (Sandbox Code Playgroud)

然后,在没有h可用的情况下,我仍然可以检索 x 和 y 轴标签作为字符串:

xlab = get(get(gca, 'xlabel'), 'string');
ylab = get(get(gca, 'ylabel'), 'string');
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法以类似的方式从图例中提取文本。我注意到:

fig_children = get(gcf, 'children');
Run Code Online (Sandbox Code Playgroud)

显示轴和图例作为图形的子项,但我似乎无法以与轴相同的方式访问它们:

ax = get(gca);
Run Code Online (Sandbox Code Playgroud)

我可能误解了它的工作方式的一些明显的东西,但我找不到一种方法来从以前制作的图例中取出字符串?

Lau*_*eer 5

图例文本与线关联,而不是与图例对象关联,因此:

ax_children = get(gca, 'children');
Run Code Online (Sandbox Code Playgroud)

输出我正在绘制的线的线阵列:

ax_children = 

  2x1 Line array:

  Line    (cos(x))
  Line    (sin(x))
Run Code Online (Sandbox Code Playgroud)

进而:

leg_strings = get(ax_children, 'displayname');
Run Code Online (Sandbox Code Playgroud)

输出元胞数组:

leg_strings = 

    'cos(x)'
    'sin(x)'
Run Code Online (Sandbox Code Playgroud)

这就是我一直在寻找的东西。