如何在 r 中使用 aline() 向绘图添加直线


R 中的abline()函数可用于向 R 中的绘图添加一条或多条直线。

该函数使用以下语法:

abline(a=NULL, b=NULL, h=NULL, v=NULL, …)

金子:

  • a、b:指定线的原点和斜率的唯一值
  • h:水平线的 y 值
  • v:垂直线的 x 值

以下示例展示了如何在实践中使用此功能。

如何添加水平线

在 R 中向图中添加水平线的基本代码是: abline(h = some value)

假设我们有以下散点图,显示数据集中xy的值:

 #define dataset
data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11),
                   y = c(13, 14, 17, 12, 23, 24, 25, 25, 24, 28, 32, 33, 35, 40, 41))

#plot x and y values in dataset
plot(data$x, data$y, pch = 16)

要在值 y = 20 处添加水平线,我们可以使用以下代码:

 abline(h = 20, col = 'coral2', lwd = 2)

以下代码说明了如何向y的平均值添加一条水平实线,并在平均值上方和下方各一个标准差处添加两条水平虚线:

 #create scatterplot for x and y
plot(data$x, data$y, pch = 16)

#create horizontal line at mean value of y
abline(h = mean(data$y), lwd = 2)

#create horizontal lines at one standard deviation above and below the mean value
abline(h = mean(data$y) + sd(data$y), col = 'steelblue', lwd = 3, lty = 2)
abline(h = mean(data$y) - sd(data$y), col = 'steelblue', lwd = 3, lty = 2)

如何添加垂直线

在 R 中向绘图添加垂直线的基本代码是: abline(v = some value)

以下代码演示了如何在直方图上的平均值上添加一条垂直线:

 #make this example reproducible
set.seed(0)

#create dataset with 1000 random values normally distributed with mean = 10, sd = 2
data <- rnorm(1000, mean = 10, sd = 2)

#create histogram of data values
hist(data, col = 'steelblue')

#draw a vertical dashed line at the mean value
abline(v = mean(data), lwd = 3, lty = 2)

如何添加回归线

在 R 中向图中添加简单线性回归线的基本代码是: abline(model)

以下代码演示了如何将拟合线性回归线添加到散点图:

 #define dataset
data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11),
                   y = c(13, 14, 17, 12, 23, 24, 25, 25, 24, 28, 32, 33, 35, 40, 41))

#create scatterplot of x and y values
plot(data$x, data$y, pch = 16)

#fit a linear regression model to the data
reg_model <- lm(y ~ x, data = data)

#add the fitted regression line to the scatterplot
abline(reg_model, col="steelblue")

请注意,我们只需要截距和斜率的值,即可使用 abline() 函数将简单的线性回归线拟合到数据。

因此,使用abline()添加回归线的另一种方法是显式指定回归模型的原始系数和斜率系数:

 #define dataset
data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11),
                   y = c(13, 14, 17, 12, 23, 24, 25, 25, 24, 28, 32, 33, 35, 40, 41))

#create scatterplot of x and y values
plot(data$x, data$y, pch = 16)

#fit a linear regression model to the data
reg_model <- lm(y ~ x, data = data)

#define intercept and slope values
a <- coefficients(reg_model)[1] #intercept
b <- coefficients(reg_model)[2] #slope

#add the fitted regression line to the scatterplot
abline(a=a, b=b, col="steelblue")

请注意,这会生成与之前相同的行。


您可以在此页面上找到更多 R 教程。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注