2016-01-18 3 views
3

Я пытаюсь вернуть некоторые данные из сюжета, который был ранее создан, но я боролся с легендой. Я использую MATLAB 2014b.Извлечь строку легенды MATLAB из существующего графика

Если ранее я установил мой участок с использованием:

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 доступный я все еще могу извлечь оси х и у меток в виде строк:

xlab = get(get(gca, 'xlabel'), 'string'); 
ylab = get(get(gca, 'ylabel'), 'string'); 

Тем не менее, я не» t, похоже, может извлечь текст из легенды аналогичным образом. Я заметил, что:

fig_children = get(gcf, 'children'); 

показывает мне обе оси и легенды, как дети фигуры, но я, кажется, не быть в состоянии получить доступ к ним таким же образом, я мог бы с осями:

ax = get(gca); 

Возможно, я неправильно понимаю что-то очевидное о том, как он работает, но я не могу найти способ получить строку из легенды, которая была ранее сделана?

ответ

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)' 

Это то, что я искал.

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'); 
Смежные вопросы