Matlab:fill命令将两个元素添加到图例中。如何避免这种情况
我正在从事一个Matlab项目,其中需要使用Matlab:fill命令将两个元素添加到图例中。如何避免这种情况,matlab,matlab-figure,figure,Matlab,Matlab Figure,Figure,我正在从事一个Matlab项目,其中需要使用fill命令。fill命令fill(X,Y,C)使用C指定的顶点颜色从X和Y中的数据创建填充多边形 我有以下代码: x_2 = [x, fliplr(x)]; inBetween = [Auf1_mW_pro_mg(1781:length(Auf1_mW_pro_mg)), fliplr(y_Temp)]; figure('Name','Test') fill(x_2, inBetween, 'r','facealpha',.5,'LineStyle'
fill
命令。fill
命令fill(X,Y,C)使用C指定的顶点颜色从X和Y中的数据创建填充多边形
我有以下代码:
x_2 = [x, fliplr(x)];
inBetween = [Auf1_mW_pro_mg(1781:length(Auf1_mW_pro_mg)), fliplr(y_Temp)];
figure('Name','Test')
fill(x_2, inBetween, 'r','facealpha',.5,'LineStyle','none');
legend()
,这让我得到了这个结果:
正如你所看到的,我有两个区域,因为我的数据是真实数据,外推线并不总是只有上面的数据线
在这种情况下,有人知道如何避免图例中显示两个数据元素吗?删除图例中的元素似乎不是一件容易完成的事情,这是我的第一个想法。也许我可以控制哪些数据被添加到图例中
谢谢大家! 如果
fill
在图例中显示两次,则会创建两个修补程序。您可以为图例
设置这些单个修补程序的可见性。首先存储图形对象的句柄
h = fill(x_2, inBetween, 'r','facealpha',.5,'LineStyle','none');
这将返回一个2×1的补丁数组,您可以为第二个元素设置handleviability
属性:
h(2).HandleVisibility = 'off';
现在它不会出现在你的传奇中。但是像
findobj
这样的函数也找不到补丁,更详细的结果是什么)。如果fill
在图例中出现两次,则会创建两个补丁。您可以为图例
设置这些单个修补程序的可见性。首先存储图形对象的句柄
h = fill(x_2, inBetween, 'r','facealpha',.5,'LineStyle','none');
这将返回一个2×1的补丁数组,您可以为第二个元素设置handleviability
属性:
h(2).HandleVisibility = 'off';
现在它不会出现在你的传奇中。但是像
findobj
这样的函数也找不到修补程序,更详细地了解其后果)。只需保留并使用要在图例中显示的对象的句柄即可
示例:
首先复制您的问题:
t = (1/16:1/8:1).'*pi; x = sin(t); y = cos(t);
%Making the plots now
plot(t,x,'r','linewidth',2);
hold on;
h1 = plot(t,y,'b','linewidth',2); %We want to show this in the legend
h2 = fill([x fliplr(x)],fliplr(y),'g'); %and one entry only for this
plot(x,y,'k','linewidth',2);
现在legend()
为我们提供了:
我们可以使用所需对象的句柄修复此问题,如下所示:
legend([h1, h2(1)]);
% or if we want to name these objects then:
% legend([h1, h2(1)],'Line Plot','Filled Polygon');
其中:
只需保留并使用要在图例中显示的对象的句柄即可 示例: 首先复制您的问题:
t = (1/16:1/8:1).'*pi; x = sin(t); y = cos(t);
%Making the plots now
plot(t,x,'r','linewidth',2);
hold on;
h1 = plot(t,y,'b','linewidth',2); %We want to show this in the legend
h2 = fill([x fliplr(x)],fliplr(y),'g'); %and one entry only for this
plot(x,y,'k','linewidth',2);
现在legend()
为我们提供了:
我们可以使用所需对象的句柄修复此问题,如下所示:
legend([h1, h2(1)]);
% or if we want to name these objects then:
% legend([h1, h2(1)],'Line Plot','Filled Polygon');
其中:
使用
legend('data1')
而不是legend()
这确实有帮助。然而,在我的实际项目中,我有一个较长的图例,因此,只有在创建的图形中最后使用fill命令时,这才有帮助,在这之前还有其他的绘图。在这种情况下,我可以通过不支持任何更多的字符串元素在一个点上剪切图例。但是,如果我想在这个传说的中间显示这个特殊的数据,这个问题是不能单独解决的。嗨,Timon,请看使用<代码>传说(‘DATA1’)<代码>,而不是<代码>传奇()/>代码>这确实有帮助。然而,在我的实际项目中,我有一个较长的图例,因此,只有在创建的图形中最后使用fill命令时,这才有帮助,在这之前还有其他的绘图。在这种情况下,我可以通过不支持任何更多的字符串元素在一个点上剪切图例。然而,如果我想在这个传说的中间展示这个特殊的数据,这个问题是不能单独解决的。嗨,Timon,请看这是最简单的方法来完成我所希望的,用下边提到的。这是最简单的方法来完成我所希望的。有没有办法在图例中添加相应数据的文字?因此,我希望使用例如“legend1”和“legend2”来代替“data1”和“data2”。如代码最后一行(注释)所述:您可以使用:legend([h1,h2(1)],'legend1','legend2')代码>是否有办法为相应数据向图例中添加文本?因此,我希望使用例如“legend1”和“legend2”来代替“data1”和“data2”。如代码最后一行(注释)所述:您可以使用:legend([h1,h2(1)],'legend1','legend2')代码>