加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MATLAB坐标轴控制

(2011-10-12 20:45:02)
标签:

杂谈

分类: matlab

MATLAB坐标轴控制

        一个关于两个曲线对照的问题,经验的方法是当两个坐标x,y轴在同样的范围内时,容易对比区别。举一个例子,绘制一条曲线的全部和部分,如下:
复制内容到剪贴板
代码:
x = -5:0.1:5;
y1 = sin(x);
h = figure('Unit', 'Normalized');
axes1 = axes('Parent', h, 'Position', [0.05 0.05 0.9 0.4]);
axes2 = axes('Parent', h, 'Position', [0.05 0.55 0.9 0.4]);
line('Parent', axes1, 'XData', x, 'YData', y1);
line('Parent', axes2, 'XData', x(1:50), 'YData', y1(1:50));
        结果如图示:


上面的图为下面图的一部分曲线内容,如果这样来看的话,两个曲线之间的关系不容易判断,鉴于此,进行如下控制:

        方法一,获得第二个坐标轴的xlim,修饰第一个坐标轴
复制内容到剪贴板
代码:
% 法1,获得axes1的xlim范围,修饰axes2
xlimit2 = get(axes1, 'XLim');
set(axes2, 'XLim', xlimit2);
        结果如图示:


这样一来,曲线之间的差别等可以比较容易观察,当然,其前提是坐标轴的xlimmode属性为手动,可以在修饰之前用set函数修改。

如果需要对比幅度的不同,可以同样方式修饰y轴。

        法二,一个MATLAB工具箱函数linkaxes函数
复制内容到剪贴板
代码:
% 法2,通过linkaxes函数
h2 = figure('Unit', 'Normalized');
axes3 = axes('Parent', h2, 'Position', [0.05 0.05 0.9 0.4]);
axes4 = axes('Parent', h2, 'Position', [0.05 0.55 0.9 0.4]);
line('Parent', axes3, 'XData', x, 'YData', y1);
line('Parent', axes4, 'XData', x(1:50), 'YData', y1(1:50));
linkaxes([axes3 axes4], 'x');
        结果和上面第二个图一样,linkaxes函数实际上使用的方法和法一相同,修改xlimmode属性后,使用linkprop函数修改其他属性,linkprop可以更为灵活的将其他属性同步起来。

        如果同时修改x和y轴,可以将options参数改为xy或者不用。

        法三,使用同一位置的两个坐标轴显示,参考mathworks关于多x、y轴控制方法,如下
        我们知道,plotyy可以产生两个y轴的图形,其要求是要同样的x轴才可以绘制,那么,对于不同x轴的图形呢,我们可以通过低层操作的方式实现,如下:
复制内容到剪贴板
代码:
% 法3,坐标轴在同一个位置显示
figure
ha = axes;
hb = axes(...
    'Position', get(ha, 'Position'), ...
    'XAxisLocation', 'top', ...
    'YAxisLocation', 'right', ...
    'Color', 'none');
hl1 = line(x, y1, 'Parent', ha);
hl2 = line(x(1:50), y1(1:50), 'Parent', hb);
图形如下:


这样不容易看出曲线属于哪个坐标轴,可以设置坐标轴颜色和曲线颜色相同,如下:
复制内容到剪贴板
代码:
set(hl1, 'Color', 'r');
set(ha, 'XColor', 'r', 'YColor', 'r');
结果如下:

同样,我们可以使用linkaxes函数将横轴设为一致,
复制内容到剪贴板
代码:
linkaxes([ha, hb]);

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有