MATLAB中Legend的一些控制方法
来源:互联网 发布:unity3d 2d精灵动画 编辑:程序博客网 时间:2024/05/19 15:23
如果一个图中我们画了n条曲线,但是我们只想加图例说明(legend)的只有m条 (m<n)。网上可以搜索很到资料,但是涉及到版本兼容问题,有些比较新的句柄属性在老版本Matlab中就用不起来,比如lineseries中的Annotation属性在我使用的R14SP1中就无法使用。
1. 最简单,最超级无敌的方法:把想要标注的图形命令给个变量名,然后再legend命令中指定。
x = -3.14:0.1:3.14;y1 = sin(x);y2 = cos(x);y3 = .1*exp(x);y4 = y1.*y3;hold onh1 = plot(x, y1, 'r');h2 = plot(x, y2, 'g');h3 = plot(x, y3, 'k');h4 = plot(x, y4, 'm');hold offxlim autolegend([h1,h3],'sin', 'exp');
2.通过控制Annotation属性来实现,详细控制方法参见http://www.mathworks.cn/help/techdoc/creating_plots/braliom.html;jsessionid=HPs0TNGQxP2TXMcZgQv4zkMvmSsZYbhG6Lwjd3JT271PLqXnHxhY!-1484299157。但是需要注意的是在稍微低版本的MATLAB中,并不提供Annotation的控制(至少我的R14SP1不支持)。
x = -3.14:0.1:3.14;y1 = sin(x);y2 = cos(x);y3 = .1*exp(x);y4 = y1.*y3;hold onh1 = plot(x, y1, 'r');h2 = plot(x, y2, 'g');h3 = plot(x, y3, 'k');h4 = plot(x, y4, 'm');hold offxlim autoset(get(get(h2, 'Annotation'), 'LegendInformation'), 'IconDisplayStyle', 'off');set(get(get(h4, 'Annotation'), 'LegendInformation'), 'IconDisplayStyle', 'off');legend('sin', 'exp');
3.多个legend以及标注部分图列构成多列图列
t=0:pi/100:2*pi; y1=sin(t); y2=cos(t); y3=y1.*y2; y4=0.5*(y1+y2); hold on h1=plot(t,y1,'-r') %h11 = plot(t(1:10:end),y1(1:10:end),'o','MarkerFaceColor','r','MarkerEdgeColor','r'); h11 = plot(t(1:20:end),y1(1:20:end),'ro'); h2=plot(t,y2,'b-'); %h22 = plot(t(1:10:end),y2(1:10:end),'^','MarkerFaceColor','b','MarkerEdgeColor','b'); h22 = plot(t(1:20:end),y2(1:20:end),'b^')h3=plot(t,y3,'c'); h4=plot(t,y4,'g'); hold off [legh,objh,outh,outm]=legend([h1,h2],'y1','y2',1); legend boxoff% matlab 6.5.1 %set(objh(3),'marker','*'); %set(objh(5),'marker','.');% matlab7 set(objh(4),'marker','o'); set(objh(6),'marker','^');legh2=copyobj(legh,gcf); [legh2,objh2]=legend([h3,h4],'y3','y4',2); legend boxoff
这样画好后,只有第二个legend可拖动,而第一个legend不可拖动,原因不明。
4.Matlab提供的legend函数,给出的legend经常覆盖了某些曲线,这样就需要把legend分成几个,相对独立,这样可以使用鼠标随意移动,确保不遮挡曲线。
a=linspace(0,2*pi,100);y1=100*sin(a);y2=50*cos(a);y3=tan(a);y4=log(a);y=[y1;y2;y3;y4];figurep=plot(a,y)legend(p(1:2),'sin','cos');ah=axes('position',get(gca,'position'),... 'visible','off');legend(ah,p(3:4),'tan','log','location','west');5.用plot函数对两个长度为30的向量分别绘制曲线的时候,在两条曲线上各画了一个marker(因为如果把所有的marker都放上去的话,感觉很拥挤,不是很好看),在对最终的画图效果做legend标注的时候,我希望将曲线及其上的marker一起标clc;clear;close all;figure_handle = figure;set(figure_handle, 'Color', 'w');data=zeros(1, 100);data(1) = 1;data(2) = 1;data(3) = 1;t = [1 : 30] / 100 * 2 * pi;cur1=real(fft(data) / 3);cur1p = cur1(1 : 30);h_1(1) = plot(t, cur1p, 'LineStyle', '-', 'LineWidth', 2, 'Color', 'r');hold onh_1(2) = plot(t(15), cur1p(15), 'LineStyle', '-', 'LineWidth', 2, 'Color', 'r', 'Marker', 's', 'MarkerSize', 10, 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'r');set(h_1, 'Parent', hSGroup);set(get(get(hSGroup, 'Annotation'), 'LegendInformation'), 'IconDisplayStyle', 'on'); cur2 = real(fft(data)) .* real(fft(data))/9;cur2p = cur2(1 : 30);h_2(1) = plot(t, cur2p, 'LineStyle', '-', 'LineWidth', 2, 'Color', 'g');h_2(2) = plot(t(12), cur2p(12), 'LineStyle', '-', 'LineWidth', 2, 'Color', 'g', 'Marker', 'o', 'MarkerSize',10, 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g');set(h_2, 'Parent', hCGroup);set(get(get(hCGroup, 'Annotation'), 'LegendInformation'), 'IconDisplayStyle', 'on'); legend('1 level', '2 levels');
- MATLAB中Legend的一些控制方法
- MATLAB中Legend的一些控制方法
- MATLAB中Legend的一些控制方法
- Matlab中legend的用法
- Matlab如何真正自如的控制legend
- Matlab如何真正自如的控制legend
- matlab绘图中legend的终极用法
- MATLAB中legend函数的用法
- matlab中legend函数的用法
- 在matlab中调整legend的位置
- Matlab中legend函数
- Matlab如何真正自如的控制legend(转!!!!)
- matlab 的 legend 用法
- matlab的legend用法
- Matlab中legend函数功能
- Matlab中画图时的标注函数legend
- Matlab中画图时的标注函数legend
- Matlab中画图时的标注函数legend
- Windows2008 R2远程桌面响应速度慢
- Javascript 继承
- 关于单片机程序设计的几点
- 再探Connection Reset By Peer
- The VPN client agent was unable to create the interprocess communication depot
- MATLAB中Legend的一些控制方法
- Google C++ Style
- 2013年4月工作小结 -- 穿越前的回眸
- Java_内存分区堆(heap) 栈(stack)和方法区(method)
- WinCE系统下BootLoader的开发
- Oracle trunc()函数的用法
- Windows CE环境下无线网卡的自动安装
- 撰写毕业论文中word公式编辑器的学习使用(二)——公式编辑器
- 关于 数据源 导出excel (这是) 通过 画一个html 实现的、最简单、好理解、的代码、