我一直试图从以前创建的情节中获取一些数据,但我一直在努力与传说。我正在使用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)');
然后,在没有h
可用的情况下,我仍然可以将x和y轴标签检索为字符串:
xlab = get(get(gca, 'xlabel'), 'string');
ylab = get(get(gca, 'ylabel'), 'string');
但是,我似乎无法以类似的方式从图例中提取文本。我注意到了:
fig_children = get(gcf, 'children');
将轴和图例都显示为图中的子项,但我似乎无法以与轴相同的方式访问它们:
ax = get(gca);
我可能误解了一些关于它的工作原理的明显方法,但是我找不到一种方法来从以前制作的传奇中获取字符串?
答案 0 :(得分:4)
图例文本与该行相关联,而不是与图例对象相关联,因此:
ax_children = get(gca, 'children');
输出我正在绘制的线的线阵列:
ax_children =
2x1 Line array:
Line (cos(x))
Line (sin(x))
然后:
leg_strings = get(ax_children, 'displayname');
输出一个单元格数组:
leg_strings =
'cos(x)'
'sin(x)'
这就是我要找的。 p>
答案 1 :(得分:2)
要获取图例句柄(假设图中只有一个存在,否则您必须将它们排序),您可以使用以下内容:
findobj(gcf,'type','Legend')
ans =
Legend (sin(x), cos(x)) with properties:
String: {'sin(x)' 'cos(x)'}
Location: 'northeast'
Orientation: 'vertical'
FontSize: 9
Position: [0.7226 0.8325 0.1589 0.0619]
Units: 'normalized'
然后,图例条目可用作单元格数组。
简而言之:
leg_strings = get(findobj(gcf,'type','Legend'),'String');