找回密码
 注册
Simdroid-非首页
查看: 769|回复: 26

如何对图形的图例进行分栏(legend)

[复制链接]
发表于 2009-7-18 16:09:55 | 显示全部楼层 |阅读模式 来自 大连理工大学
本帖最后由 messenger 于 2010-5-18 17:20 编辑

我现在绘出了如图11.jpg中的图形,但是图例看起来不好看,而且遮住了一部分图形,我现在想将这个图例拿出来,标注成如图文献.jpg中的图例那样的图形,其实就是如何将我的图中的四个图例分成两行(就像文献那个图形那样),其中每一行有两个图例的问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-7-18 17:12:46 | 显示全部楼层 来自 广西贵港
Simdroid开发平台
h=legend()
get(h)
set(h)
你就明白了
回复 1 不支持 0

使用道具 举报

 楼主| 发表于 2009-7-19 09:41:57 | 显示全部楼层 来自 大连理工大学
2# shunfly
非常感谢,根据你的提示,我用下面的代码修改为如图所示的图例,但是如何修改为我说的两行两列的图例形式呀。现在只是将图例由垂直方向改变为水平方向了。

  1. m=legend([h15 h1 h02(1) h01(1)],'\Pi_1_1(\lambda)','\Pi_2_2(\lambda)', ...
  2. 'The vertical asymptotes of \Pi_1_1(\lambda)','The vertical asymptotes of \Pi_2_2(\lambda)');
  3. set(m,'Orientation','horizontal')
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 16:15:31 | 显示全部楼层 来自 大连理工大学
我找到一个相关的,但它是将这四个图例分成左右两个图例来画的,然后进行组合一下,但是图例不能有边框(有了就不好看了),还是不能实现我说的那样。
http://forum.simwe.com/viewthrea ... mp;highlight=legend
http://genial.ycool.com/post.138255.html
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 16:54:04 | 显示全部楼层 来自 大连理工大学
我按照我上面帖子中的两个链接做出了下面这样的图形,但是跟这两个链接中的一样,其中有一个图例是不能往图形外面移动的,这个该如何解决。而且也像上贴中我说的,不能对图例添加边框,否则很是难看。这个图形添加边框没有问题,我还试了一个图形居然添加边框很难看,怪了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 16:55:20 | 显示全部楼层 来自 大连理工大学
本帖最后由 zhoulon 于 2009-7-19 16:58 编辑

我的图形添加图例边框后的图形,
试验的一个添加图例边框的图形。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 17:17:50 | 显示全部楼层 来自 大连理工大学
找到一个matlab图例不能分栏的帖子,但个人感觉matlab功能这么强大,应该有办法实现我要实现的功能的,总有点不甘心,唉。
http://forum.simwe.com/viewthrea ... highlight=%2Blegend
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 17:43:48 | 显示全部楼层 来自 大连理工大学
这个是振动论坛搜索到的,也是不行,难道就真的不行,唉。
http://www.chinavib.com/forum/vi ... mp;highlight=legend
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 17:49:58 | 显示全部楼层 来自 大连理工大学
这个是matlab中文论坛搜索到的,也是不行,这样说来应该是不可以了,呵呵。http://www.ilovematlab.cn/viewth ... mp;highlight=legend
回复 不支持

使用道具 举报

发表于 2009-7-19 18:18:34 | 显示全部楼层 来自 浙江杭州
本帖最后由 messenger 于 2010-4-4 15:22 编辑

1# zhoulon

要实现你要求的效果,必须添加一个窗口。

下面是代码和效果图形:

游客,本帖隐藏的内容需要积分高于 2 才可浏览,您当前积分为 0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-19 19:26:08 | 显示全部楼层 来自 大连理工大学
11# davianjane
多参与讨论,多回答问题,就会得到技术积分的,每一个人都是从新手过来的。
回复 不支持

使用道具 举报

发表于 2009-7-19 21:19:04 | 显示全部楼层 来自 广西贵港
本帖最后由 shunfly 于 2009-7-19 21:21 编辑

如果仅仅应付交稿,很多方法,10#即其一
如果需要方便的定制LEGEND,那么,SET,GET,完全可以定制
注意,Legend的Posi,Child属性
Child设置Xdata和Pos即可实现任意定制
顺手写了个,自己试试完善吧
可以作为一个输入排列方式,类于[2,2],[4,1],[1,4]等待的函数

  1. x = -pi:pi/20:pi;
  2.   x1=1:10;x2=21:30;
  3.   y1=ones(1,10)*0.4;y2=ones(1,10)*0.6;
  4.   hPlot = plot(x,sin(x),'-ro',x,cos(x),'-.b',x,sin(2*x),'-go',x,cos(2*x),'-.r');
  5.   hLeng = legend('sin','cos','sin(2x)','cos(2x)') ;
  6.   pos   = get(hLeng,'posi');
  7.   pos(3)=pos(3)*2;
  8. %    pos(4)=pos(4)/2;
  9.   set(hLeng,'posi',pos);
  10.   dd = get(hLeng,'child');
  11.   
  12.   xdata = get(dd(1),'xdata');
  13.   xdata = xdata/2;
  14.   set(dd(1),'xdata',xdata);
  15.   
  16.    xdata = get(dd(2),'xdata');
  17.   xdata(2) = xdata(2)/2;
  18.   set(dd(2),'xdata',xdata);
  19.   
  20.   xpo  = get(dd(3),'posi');
  21.   xpo(1) = xpo(1)/2;
  22.   set(dd(3),'posi',xpo);
  23.   xdata1 = get(dd(2),'xdata');
  24.   xdata  = get(dd(5),'xdata');
  25.   xdata  = [0.5 0.5+ xdata1(2)-xdata1(1)];
  26.   set(dd(5),'xdata',xdata);
  27.   set(dd(5),'ydata',get(dd(2),'ydata'));

  28.    xdata = 0.5+ (xdata1(2)-xdata1(1))/2;
  29.   ydata = get(dd(2),'ydata');
  30.   set(dd(4),'xdata',xdata(1),'ydata',ydata(1));
  31.   
  32.   xpo  = get(dd(3),'posi');
  33.   xpo(1) = 0.5+ xdata1(2)-xdata1(1)
  34.   xpo(2) = get(dd(1),'ydata');
  35.   set(dd(6),'posi',xpo);
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-7-20 11:13:30 | 显示全部楼层 来自 上海
如果仅仅应付交稿,很多方法,10#即其一
如果需要方便的定制LEGEND,那么,SET,GET,完全可以定制
注意,Legend的Posi,Child属性
Child设置Xdata和Pos即可实现任意定制
顺手写了个,自己试试完善吧
可以作为一个 ...
shunfly 发表于 2009-7-19 21:19


legend的函数也可以不用,直接在界面上绘制一个axes,然后画四条线,线性设为对应的,然后再创建四个text就搞定了。
回复 不支持

使用道具 举报

发表于 2009-7-20 12:45:46 | 显示全部楼层 来自 北京
legend的函数也可以不用,直接在界面上绘制一个axes,然后画四条线,线性设为对应的,然后再创建四个text就搞定了。
cwit 发表于 2009-7-20 11:13


messenger用的不就是这种方式嘛!呵呵!
回复 不支持

使用道具 举报

发表于 2009-7-20 19:25:33 | 显示全部楼层 来自 广西贵港
本帖最后由 shunfly 于 2009-7-20 19:38 编辑

Legend其实就是一个封装了消息响应函数的AXES
使用Legend的原因在于,其与PLOT的关联
14# cwit
TO 楼主
虽然你是总版主,但是觉得你的技术分在本版加得太多了
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-20 23:10:33 | 显示全部楼层 来自 辽宁大连
16# shunfly
呵呵,感谢提醒,以后注意,关键是想鼓励一下大家参与讨论。
回复 不支持

使用道具 举报

发表于 2010-4-4 14:33:49 | 显示全部楼层 来自 台湾
10# messenger
汗! 才发现自己不够格看资料!
要常来此学习, 增加些程度了
回复 不支持

使用道具 举报

发表于 2010-4-4 15:27:35 | 显示全部楼层 来自 浙江杭州
17# ChaChing

13#的cwit已经详细描述了方法,我的贴子只是用代码举了一个例子,以你老兄的水平有方法写这几行代码是很容易的事情。

当时将这段代码加密5个积分,也只是为了表示一下积分的作用,鼓励大家多发技术水平高的贴子。
回复 不支持

使用道具 举报

发表于 2010-5-18 21:54:07 | 显示全部楼层 来自 湖北武汉
学习了很多。
回复 不支持

使用道具 举报

发表于 2010-10-2 16:39:44 | 显示全部楼层 来自 山东青岛
学习了,不错

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 13:22 , Processed in 0.077024 second(s), 20 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表