所以我的数据在这里:http://www.atmos.uw.edu/~akchen0/CERES_Project/
我想在这里获得图中图例的句柄,这样我就可以在子图上重新绘制图例时复制图形的图例条目。
如果我尝试通过运行findobj(ax1,'Type','axes','Tag','legend')
来找到轴,它只返回一个空矩阵:0-by-1。还有另一种获得传奇的方法吗?
答案 0 :(得分:6)
你的错误是,你使用了轴柄而不是数字手柄:
leg = findobj(figureHandle,'Type','axes','Tag','legend')
或简单地说:
leg = findobj(gcf,'Tag','legend')
会奏效。
答案 1 :(得分:3)
设置是这样的。首先创建图。这个作为画布服务。然后在图上绘制其他对象。绘制的对象称为子对象。函数调用,
plot(0:10);
创建一个人物和一个孩子。该孩子被称为axes
。通过添加图例,
legend('This is a legend');
matlab创建一个名为legend
的轴对象,并将其置于图中。这成了另一个孩子。可以在
h = get(gcf,'Children')
然后你可以保存图并关闭它。当您再次加载图形时,将恢复整个图形,带有图例等。这包括为孩子们提供新的对象句柄。这意味着可以再次使用
检索孩子 h = get(gcf,'Children')
您可以使用
找到子属性get(h(anyElementInChButJustOnePerCall))
通过查看属性,您会注意到有一个名为Tag
的属性。这个名为legend
的图例。您可以使用get
找到它并查看所有句柄的属性(不应该太多)或自动使用for
循环
h = get(hFig,'children');
hLeg = [];
for k = 1:length(h)
if strcmpi(get(h(k),'Tag'),'legend')
hLeg = h(k);
break;
end
end
其中hFig是图的句柄(写在右上角“图......”)。或者如果刚刚加载了图形,可以使用“获取当前数字”gcf
来访问它。