注册 登录
编程论坛 Matlab

有关legend的一个棘手问题

zhangsun 发布于 2006-07-24 11:46, 4640 次点击

你们好:

matlab中图例legend的‘Orientation’属性只有‘Horizontal’和‘Vertical’两项选择。比如我的一张图中有8条曲线,我想将图例排列成4行2列的形式,不知怎么实现。查阅了很多资料,没有找到相关的。实际上有许多文献中图片图例采用这种矩阵排列方式的。希望能得到高手的启发,本人正在编写学位论文,急!

你的帮助对我很重要!

5 回复
#2
Genial2006-07-24 13:24
仔细读读matlab的legend里面的一段帮助:
[LEGH,OBJH,OUTH,OUTM] = LEGEND(...) returns a handle LEGH to the
legend axes; a vector OBJH containing handles for the text, lines,
and patches in the legend; a vector OUTH of handles to the
lines and patches in the plot; and a cell array OUTM containing
the text in the legend.

通过控制objh的属性可以实现你的目的。
我的博客 http://genial.yculblog.com上面曾经写个一个改变标准legend的,
但我现在访问不了,你可以找找去,如果找不到的话,水木清华的mathtools版上也有个
#3
zhangsun2006-07-24 15:52

版主你好:

你提供的两个地方我都仔细查询过,没找到针对这个非标问题的答案。matlab里legend帮助我已研究多遍,还是解决不了,能力有限

#4
Genial2006-07-24 18:21
http://genial.yculblog.com/post.138255.html 不过跟你的需求有一些差别
#5
zhangsun2006-07-24 20:17

版主你好:

你这是现在我能找到的最好的答案了,已是很感激了!不过现在时间紧急,将来有时间了再来好好研究这个问题!也希望更多的老师专家能够给我一点启发,将这一问题根本解决!

#6
Genial2006-07-25 07:38

自己用edit打开legend的m代码,直接修改该函数或许可以算是最根本的解决办;
另外,获得了那些线条和文字的句柄,通过设置他们的position属性应该也能够实现你的问题的了
想直接用legend改变某个参数就实现你的目的估计不太可能

[此贴子已经被作者于2006-7-25 7:45:57编辑过]

1