我想在R或MATLAB中创建一个简单的散点图,其中涉及两个变量$ x $和$ y $,它们与之相关的错误为$ \ epsilon_x $和$ \ epsilon_y $。

但是,我没有添加错误栏,而是希望在每个$(x,y)$对周围创建一个“阴影框”,框的高度范围从($ y-\ epsilon_y $)到($ y + \ epsilon_y $),框的宽度从($ x-\ epsilon_y $)到($ x + \ epsilon_y $)。

在R或MATLAB中可能吗?如果是这样,我可以使用什么程序包或代码来生成这些图。理想情况下,我希望程序包也支持非对称错误范围。

最佳答案

您可以通过创建以下函数在matlab中进行操作:

function errorBox(x,y,epsx,epsy)
    %# make sure inputs are all column vectors
    x = x(:); y = y(:); epsx = epsx(:); epsy = epsy(:);

    %# define the corner points of the error boxes
    errBoxX = [x-epsx, x-epsx, x+epsx, x+epsx];
    errBoxY = [y-epsy, y+epsy, y+epsy, y-epsy];

    %# plot the transparant errorboxes
    fill(errBoxX',errBoxY','b','FaceAlpha',0.3,'EdgeAlpha',0)
end
xyepsxepsy都可以是 vector 。

例:
x = randn(1,5); y = randn(1,5);
epsx = rand(1,5)/5;
epsy = rand(1,5)/5;

plot(x,y,'rx')
hold on
errorBox(x,y,epsx,epsy)

结果:

08-20 00:15