现在的位置: 首页 > 综合 > 正文

关于Matlab坐标轴的Position

2013年02月19日 ⁄ 综合 ⁄ 共 1142字 ⁄ 字号 评论关闭

想画一个坐标轴箭头,需要知道axis的坐标:

x1=linspace(0,1,100);
y1=x1.^2;
figure1 = figure('PaperPosition',[0.6345 6.345 20.3 15.23],'PaperSize',[20.98 29.68]);
axes1 = axes('Parent',figure1);
hold(axes1,'all');
plot1 = plot(x1,y1);

% axis square
pos = get(axes1, 'position');
annotation('arrow', [pos(1), pos(1)+pos(3)], [pos(2) pos(2)+pos(4)]);

做出的图如下:

可以看出这个代码:

pos = get(axes1, 'position');

能得出axis的正确的坐标。

但是加上这个

axis square

这个就不能得出这个axis的正确坐标。

x1=linspace(0,1,100);
y1=x1.^2;
figure1 = figure('PaperPosition',[0.6345 6.345 20.3 15.23],'PaperSize',[20.98 29.68]);
axes1 = axes('Parent',figure1);
hold(axes1,'all');
plot1 = plot(x1,y1);

axis square
pos = get(axes1, 'position');
annotation('arrow', [pos(1), pos(1)+pos(3)], [pos(2) pos(2)+pos(4)]);

这几个黑框就是就是pos = get(axes1, 'position');计算出来的坐标。

但是加上axis square,就不知道问题出在那了?就找不到坐标轴原点的坐标了。

微博上星空下的巫师,给了两个链接, http://www.mathworks.com/matlabcentral/fileexchange/30018和http://www.mathworks.com/matlabcentral/fileexchange/32168,第一个链接中自己感觉有个问题

    figure, 
    x = 1:10;
    y = x.^2;
    plot(x, y, '-r', 'LineWidth', 2);
    axis off;
    oa = oaxes;
    
    set(oa, 'TickLength', [10 10]);
    set(oa, 'Arrow', 'end');
    grid on
    oa.Origin = [0 0 0];

产生下面的图

从图中可以看出来,这个箭头的形状是和这个轴上TickLength相关联的,在个图中Ticklength太长了不好看。感觉还是不如这个annotation用的方便,但是就找到要画的坐标不容易。委屈求解决。。

【上篇】
【下篇】

抱歉!评论已关闭.