Легенда в gplotmatrix

Имея N x M матрицу признаков featMat (для M признаков и N образцов) и N x 1 вектор классов classVec, мы можем красиво визуализировать эти многомерные данные с помощью gplotmatrix.

Пример:

featMat = rand(10,3);
classVec = rand(10,1) > 0.3;
gplotmatrix(featMat, [], classVec, ['g','r']);

пример вывода для gplotmatrix

Мой вопрос: как я могу управлять легендой этого сюжета? Что мне нужно, так это конкретный текст с определенным цветом для каждого из классов, появляющийся в моем файле classVec.

Комментарий: Целое число classVec можно заменить массивом ячеек для управления текстом (например, classVec = {'foo','bar','bar', ..., 'foo'}). В этом случае я не знаю, как контролировать, какой класс получает какой цвет. Кажется, это зависит от порядка появления в classVec. Какие-либо предложения?


person matheburg    schedule 06.03.2015    source источник
comment
Возможно, это может помочь: stackoverflow.com/questions/25875628 /   -  person Dev-iL    schedule 06.03.2015
comment
@Dev-iL Спасибо за быстрый ответ. Однако в первом тесте я не мог напрямую установить легенду с помощью команды legend после построения графика. Я уверен, что можно манипулировать всем с помощью более глубоких манипуляций со свойствами, но я ожидаю, что gplotmatrix предоставит естественный способ установки легенды. Я уверен, что это довольно легко. Разве не должно? Я просто не нашел ответа... :)   -  person matheburg    schedule 06.03.2015
comment
Кажется, что только одна из осей содержит легенду... И даже если это не так, вы, вероятно, могли бы использовать findobj для получения дескриптора легенды. Кстати, какая версия MATLAB?   -  person Dev-iL    schedule 06.03.2015
comment
@Dev-iL Matlab 2012b. Яп, ты прав. Мне просто интересно, почему gplotmatrix, кажется, не обеспечивает более естественный способ установить легенду.   -  person matheburg    schedule 06.03.2015


Ответы (1)


Легенду, созданную gplotmatrix, можно найти, поскольку для свойства 'Tag' установлено значение 'legend' (по крайней мере, в Matlab R2010b). Так:

featMat = rand(10,3);
classVec = rand(10,1) > 0.3;
gplotmatrix(featMat, [], classVec, ['g','r']);
h = findobj('Tag','legend');
set(h, 'String', {'Text1', 'Text2'})
person Luis Mendo    schedule 06.03.2015
comment
Большое спасибо, все работает (для моего Matlab 2012b)! Это действительно решение для управления свойствами :) - person matheburg; 06.03.2015
comment
@matheburg Да, gplotmatrix должен справиться с этим более естественно; или хотя бы вернуть дескриптор легенды - person Luis Mendo; 06.03.2015
comment
Одно замечание: вы должны ограничить findobj интересующей вас фигурой; в противном случае все легенды на всех рисунках выполняются с помощью set. - person matheburg; 09.03.2015