r - 用 R 表示水平和垂直误差线的椭圆

标签 r plot drawellipse

在 R 中,如果只有汇总数据(即不同数据集的平均值和 SD)可用,如何使用省略号来表示 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)
}

您可以使用 apply() 轻松使用它:

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)
df = data.frame(x, y, sd_x, sd_y)
apply(df, 1, function (x) { draw_ellipse(x[1], x[2], x[3], x[4]) })
points(x, y, pch = 3)

用不同颜色绘制椭圆的解决方案:

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)

关于r - 用 R 表示水平和垂直误差线的椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511889/

相关文章:

r - 在 R 中的简单 X-Y 图上叠加椭圆

matlab - 检测青光眼照片中的椭圆

r - 按组计算的累积(扩展窗口)均值,对每个计算进行重复检查

python - 调整顶部和右侧联合边缘图的轴大小以匹配中心图与 matplotlib

plot - 使用 gnuplot 拟合阻尼正弦波数据集,出现很多错误

python - 基于线的热图或二维线直方图

c# - 如何在windows窗体上更快地画圆?

r - 对 selectizeInput 使用 onchange 回调选项

r - 遍历getFinancials并为viewFinancials创建数据框,同时跳过错误

java - 如何使用 Process builder 从 java 运行 R 脚本