访问图例条目超出矩阵维度
Accessing legend entries exceeds matrix dimensions
我正在尝试使用 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 exceeds matrix dimensions.' 同样,如果我不使用 'legend(list)' 而是明确地手动创建图例输入图例条目。有谁知道为什么会发生这种情况或如何解决?谢谢!
您需要使用对 legend
调用的额外输出。具体来说,检查 docs.
中名为 icons
的第二个输出
至于错误,对findobj(...)
的调用产生了一个空向量,因此确实超出了矩阵维度。确实(来自文档):
Starting in R2014b, the legend function returns a legend object. In
previous releases it returns an axes object.
所以也许这就是为什么你不能使用 findobj
来获取图例文本...
总之,这是解决您问题的方法。在此示例中,我创建了 3 个图并更改了图例中第一个和第二个条目的文本颜色:
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)
输出:
当然,您可以使用 plots
输出来更改任何 属性 您想要的图,使它们适合图例条目。
我正在尝试使用 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 exceeds matrix dimensions.' 同样,如果我不使用 'legend(list)' 而是明确地手动创建图例输入图例条目。有谁知道为什么会发生这种情况或如何解决?谢谢!
您需要使用对 legend
调用的额外输出。具体来说,检查 docs.
icons
的第二个输出
至于错误,对findobj(...)
的调用产生了一个空向量,因此确实超出了矩阵维度。确实(来自文档):
Starting in R2014b, the legend function returns a legend object. In previous releases it returns an axes object.
所以也许这就是为什么你不能使用 findobj
来获取图例文本...
总之,这是解决您问题的方法。在此示例中,我创建了 3 个图并更改了图例中第一个和第二个条目的文本颜色:
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)
输出:
当然,您可以使用 plots
输出来更改任何 属性 您想要的图,使它们适合图例条目。