2015-07-23 2 views
1

Я пытаюсь построить некоторые данные с помощью Matlab R2015a, и поскольку наборы данных меняются для разных графиков, я хочу создать легенду (полу) автоматически. Я делаю это со списком строк (называемый списком), а затемДоступ к словам легенды превышает размеры матрицы

leg = legend(list); 
legtxt=findobj(leg,'type','text'); 
set(legtxt(1),'color','r'); 
set(legtxt(2),'color','b'); 

a.s.o. согласно записям.

Однако, независимо от того, какой индекс я указываю в части 'set (legtxt (i)), Matlab всегда говорит мне, что «Index превышает размеры матрицы». То же самое, если я создаю легенду вручную, не используя «legend (list)», но явно вводя записи легенды. Кто-нибудь знает, почему это происходит или как его решить? Благодаря!

+1

, пожалуйста, напишите [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) –

ответ

0

Вам необходимо использовать дополнительные выходы от вызова до legend. В частности, проверьте 2-й вывод, который называется icons в docs.

Что касается ошибки, то вызов findobj(...) дает пустой вектор, поэтому размеры матрицы действительно превышены. Действительно (из документов):

Начиная с R2014b функция легенды возвращает объект легенды. В предыдущих версиях он возвращает объект осей.

Так может быть, именно поэтому вы не можете использовать findobj принести легенды текст ...

Во всяком случае здесь, как решить вашу проблему. В этом примере я создаю 3 участков и изменить цвет текста 1-го и 2-го входа внутри легенды:

x = 1:10; 
y1 = sin(x); 
y2 = cos(x); 
y3 = x; 

plot(x,y1,'y*',x,y2,'g--',x,y3,'k') 

list = {'y1';'y2';'y3'}; 

%// You want to play with icons and possibly plots. 
[leg,icons,plots,str] = legend(list) 

set(icons(1),'color','r','FontSize',12) 
set(icons(2),'color','b','FontSize',12) 

Выход:

enter image description here

Конечно, вы можете использовать plots выход для изменения любого свойства, которое вы хотите от участков, чтобы они соответствовали их записи в легенде.

+0

Очень замечательно, спасибо большое! Я подозревал, что это было изменение в одном из новых выпусков, но не удалось найти его в примечаниях к выпуску ... –

+0

Отличный вариант! –

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