Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用R表示水平和垂直误差条的椭圆_R_Plot_Drawellipse - Fatal编程技术网

用R表示水平和垂直误差条的椭圆

用R表示水平和垂直误差条的椭圆,r,plot,drawellipse,R,Plot,Drawellipse,在R中,如果只有汇总数据,即不同数据集的平均值和标准差,如何使用椭圆表示x和y变量的误差条(标准偏差)。任何反馈都将不胜感激 您可以编写自己的函数,如下所示: draw_ellipse = function (mean_x, mean_y, sd_x, sd_y) { ellipse <- function (x) { sin(acos(x)) } t = seq(-1, 1, length.out = 100) el_y = sd_y*ellipse(t)

在R中,如果只有汇总数据,即不同数据集的平均值和标准差,如何使用椭圆表示x和y变量的误差条(标准偏差)。任何反馈都将不胜感激

您可以编写自己的函数,如下所示:

draw_ellipse = function (mean_x, mean_y, sd_x, sd_y)
{
    ellipse <- function (x) { sin(acos(x)) }
    t = seq(-1, 1, length.out = 100)
    el_y = sd_y*ellipse(t)
    newx = mean_x + sd_x * t
    polygon(c(newx, rev(newx)), c(mean_y + el_y, rev(mean_y - el_y)), col = "grey", border = NA)
}
用不同颜色绘制椭圆的解决方案:

draw_ellipse = function (mean_x, mean_y, sd_x, sd_y, colidx)
{
    ellipse <- function (x) { sin(acos(x)) }
    t = seq(-1, 1, length.out = 100)
    el_y = sd_y*ellipse(t)
    newx = mean_x + sd_x * t
    polygon(c(newx, rev(newx)), c(mean_y + el_y, rev(mean_y - el_y)), col = as.character(colors[colidx]), border = NA)
}

x = runif(10)
y = runif(10)
sd_x = abs(rnorm(10, 0.1, 0.02))
sd_y = abs(rnorm(10, 0.05, 0.01))
plot(x, y)
colors = rainbow(length(x))
df = data.frame(x, y, sd_x, sd_y, colidx = 1:length(x))
apply(df, 1, function (x) { draw_ellipse(x[1], x[2], x[3], x["sd_y"], x["colidx"]) })
points(x, y, pch = 3)
draw_椭圆=函数(平均值x,平均值y,标准差x,标准差y,colidx)
{

ellipse您可能喜欢函数
car::ellipse
,即car包中的ellipse()函数。
ellipse
包中的
ellipse
函数将获取摘要信息(包括相关性)并提供代表置信区间的椭圆。

Tomas,感谢您的快速响应。太好了。我将代码应用于我的数据,效果很好。但是,数据椭圆部分重叠。由于数据代表不同的资源,是否可以对椭圆使用不同的颜色编码?Ta非常感谢。这就是我的data看起来像…x@peant,欢迎,它很有帮助。您有两种可能-要么尝试删除将围绕每个椭圆打印边框的
border=NA
,要么尝试更改col参数以沿某个托盘进行更改(请参见
?palete
)。然后,您需要在
draw_eliple
函数中添加额外的参数
col
,并在
apply
call中提供它。Tomas,最后一个问题。我现在同意董事会的意见,但希望继续使用彩色椭圆。如何为他们“apply”提供“col”参数call?@Peanon,只需在数据框中添加一个新列,例如,
df=data.frame(x,y,sd\u x,sd\u y,col=1:length(x))
,然后在apply调用中使用它。请参阅我的更新答案。
draw_ellipse = function (mean_x, mean_y, sd_x, sd_y, colidx)
{
    ellipse <- function (x) { sin(acos(x)) }
    t = seq(-1, 1, length.out = 100)
    el_y = sd_y*ellipse(t)
    newx = mean_x + sd_x * t
    polygon(c(newx, rev(newx)), c(mean_y + el_y, rev(mean_y - el_y)), col = as.character(colors[colidx]), border = NA)
}

x = runif(10)
y = runif(10)
sd_x = abs(rnorm(10, 0.1, 0.02))
sd_y = abs(rnorm(10, 0.05, 0.01))
plot(x, y)
colors = rainbow(length(x))
df = data.frame(x, y, sd_x, sd_y, colidx = 1:length(x))
apply(df, 1, function (x) { draw_ellipse(x[1], x[2], x[3], x["sd_y"], x["colidx"]) })
points(x, y, pch = 3)