如何从R中的plot()中提取散点图数据

如何从R中的plot()中提取散点图数据,r,R,下面是一个线性模型,我们使用绘图绘制“残差与拟合值”。然而,我们似乎无法直接提取此图中点的坐标(尽管我们可以使用M1$residuals)。但是这个例子是针对一般散点图的,所以我们需要“直接”提取 我注意到其他绘图可以提取数据(例如,statsattribution inboxplot)。为什么最简单的scateer图不能(在下面的代码中都为空) x1通常,当您绘制数据时,您知道数据,因此无需使用plot函数返回数据 事实上,这样做将违反软件工程原则,即“软件工程原则”,简称SRP。像boxpl

下面是一个线性模型,我们使用
绘图
绘制“残差与拟合值”。然而,我们似乎无法直接提取此图中点的坐标(尽管我们可以使用
M1$residuals
)。但是这个例子是针对一般散点图的,所以我们需要“直接”提取

我注意到其他绘图可以提取数据(例如,
stats
attribution in
boxplot
)。为什么最简单的scateer图不能(在下面的代码中都为空)


x1通常,当您绘制数据时,您知道数据,因此无需使用
plot
函数返回数据

事实上,这样做将违反软件工程原则,即“软件工程原则”,简称SRP。像
boxplot
这样的函数返回数据,因为它们执行两个函数(因此严格地说违反了SRP):它们计算一个统计数据,然后绘制它。因此,除了打印统计数据外,还可以方便地返回计算的统计数据


在您的示例中,计算由
lm
完成,(仅)绘图由
plot
完成。正如您所注意到的,如果您需要数据,
M1$residuals
M1$fitted.values
提供该数据。

通常当您打印数据时,您知道该数据,因此无需使用
plot
函数返回该数据

事实上,这样做将违反软件工程原则,即“软件工程原则”,简称SRP。像
boxplot
这样的函数返回数据,因为它们执行两个函数(因此严格地说违反了SRP):它们计算一个统计数据,然后绘制它。因此,除了打印统计数据外,还可以方便地返回计算的统计数据

在您的示例中,计算由
lm
完成,(仅)绘图由
plot
完成。正如您所注意到的,如果您需要数据,
M1$residuals
M1$fitted.values
提供了它

x1 <- c(3.4, 2.5, 8, -4, 1)
y1 <- c(2, 3, 10, -1, 0.5)
M1 <- lm(x=x1, y=y1)
this_plot <- plot(M1,1)
this_plot
# NULL
this_plot$stats
# NULL