2015-11-27 3 views
0

У меня есть цифры (в формате файла фиговым от Matlab), каждый из которых содержит линейный график с двумя линиями (представляющих кривые ЭЭГ), осей, кучей наклеек и т.д.Редактирование объектов в пределах фигуры

Я хочу:

  1. изменить цвет линий
  2. удалить некоторые из меток

Я бы перебираем фиговых файлы и делать то же самое для каждого из них.

Есть ли список всех объектов внутри фигуры, которые я мог бы индексировать и редактировать? Как я могу добраться до этих объектов с помощью команд (т. Е. Без gui)?

+0

Вы должны посмотреть на ['Дети'] (http://www.mathworks.com/help/matlab/ref/figure-properties.html) каждой фигуры, чтобы получить дескриптор ваших осей. «Дети» осей являются объектами (линиями) линии, которые формируют ваш сюжет, который вы можете [прямо и модифицировать] (http://www.mathworks.com/help/matlab/ref/primitiveline-properties.html). То же самое касается [легенды] (http://www.mathworks.com/help/matlab/ref/legend-properties.html), но я не помню, является ли это дочерним элементом фигуры или осей; Я бы угадал топоры. – excaza

+0

['findobj'] (http://www.mathworks.com/help/matlab/ref/findobj.html) также может быть полезным. – excaza

+1

Это сообщение в блоге также может быть полезно: [Редактирование существующего файла рисунка в MATLAB] (http://blogs.mathworks.com/videos/2014/12/19/editing-an-existing-figure-file-in-matlab /) – excaza

ответ

3

Линия, подставка и т. Д. Являются дочерними элементами оси, которая сама по себе является дочерним элементом фигуры. Что вам нужно сделать, так это получить ручки для объектов, которые вы хотите изменить с помощью этой иерархии.

% Get a handle to the figure 
hfig = openfig('testfig'); 

% Get all children of the CurrentAxes. Most of what you want is here. 
axes_obj = allchild(hfig.CurrentAxes); 

% Edit Axes object according to its type 
For ii = 1:length(axes_obj) 
    switch axes_obj(ii).Type 
     case 'Text' 
      % Do something, for example: 
      axes_obj(ii).String = 'changed'; 
     case 'Line' 
      % Do something, for example: 
      axes_obj(ii).MarkerEdgeColor = 'b'; 
    end 
end 

% Save figure 
savefig(hfig, 'testfig') 

Вы можете увидеть все свойства объекта, который вы хотите редактировать, просто набрав axes_obj(ii) в окне командной строки.

Смежные вопросы