这是一个使用来自ISLR的数据集College的示例:
library(scatterplot3d)
library(ISLR)
attach(College)
s3d <- scatterplot3d(x=Top10perc, y=S.F.Ratio, z=PhD)
my.lm <- lm(Top10perc ~ S.F.Ratio + PhD)
plane <- s3d$plane3d(my.lm, lty.box = "solid", draw_polygon = TRUE)

我想增加灰色多边形(平面)的大小。来自scatterplot3d文档:
参数
draw_lines和draw_polygon允许选择是通过线段表示平面,还是将平面分别表示为实体表面。polygon_args中的列表收集要传递给基础多边形调用的参数,该调用如果draw_polygon=TRUE绘制一个实心(或透明)平面。
polygon函数:
polygon(x, y = NULL, density = NULL, angle = 45, border = NULL, col = NA, lty = par("lty"), ..., fillOddEven = FALSE)
我想我需要在底层的x调用中更改polygon和y参数,但是我怎么做呢?我能进入他们吗?
发布于 2019-01-23 14:30:53
我想你画错了飞机。文档有点稀疏,但似乎s3d$plane3d假定z是响应变量,x是第一个预测器,y是第二个预测变量。但是即使我改变了你的代码来使用这些假设,例如。
library(scatterplot3d)
library(ISLR)
s3d <- with(College, scatterplot3d(z=Top10perc, x=S.F.Ratio, y=PhD))
my.lm <- lm(Top10perc ~ S.F.Ratio + PhD, data = College)
plane <- s3d$plane3d(my.lm, lty.box = "solid", draw_polygon = TRUE)我没有一个好的情节:

似乎scatterplot3d并没有在边框的边框上剪裁飞机。
我用rgl得到了更好的飞机,
library(rgl)
library(ISLR)
with(College, plot3d(x=Top10perc, y=S.F.Ratio, z=PhD))
my.lm <- lm(Top10perc ~ S.F.Ratio + PhD, data = College)
coefs <- coef(my.lm)
planes3d(a = -1, b = coefs["S.F.Ratio"], c = coefs["PhD"], d = coefs["(Intercept)"],
alpha = 0.2)

图可以旋转,但不像scatterplot3d输出那样好看(平面上没有网格),而且很难绘制:rgl::planes3d中没有对lm()结果的支持,因此需要仔细阅读帮助页面。也许其他人可以提供一个更好的选择。
https://stackoverflow.com/questions/54327824
复制相似问题