Draw Three Dimensional Predict Plot Using Package 'rgl'

Draw 2 dimensional and three dimensional plot for multiple regression models using package 'ggplot2' and 'rgl'. Supports linear models (lm), generalized linear models (glm) and local polynomial regression fittings (loess).


R package predict3d aims to draw predicts plot for various regression models. The main two functions are ggPredict() for 2-dimensional plot and predict3d() for 3-dimensional plot.

You can install predict3d package from github.

if(!require(devtools)) install.packages("devtools")
devtools::install_github("cardiomoon/predict3d"")

Linear Regression Models

You can draw linear regression models. First model has one categorical and one continuous explanatory variables.

require(predict3d)
require(rgl)
fit1=lm(Sepal.Length~Sepal.Width*Species,data=iris)
fit1
 
Call:
lm(formula = Sepal.Length ~ Sepal.Width * Species, data = iris)
 
Coefficients:
                  (Intercept)                    Sepal.Width  
                       2.6390                         0.6905  
            Speciesversicolor               Speciesvirginica  
                       0.9007                         1.2678  
Sepal.Width:Speciesversicolor   Sepal.Width:Speciesvirginica  
                       0.1746                         0.2110  

You can draw plot for this model. ggPredict() function draws a scatterplot with regression line and shows regression equations parallel to the regression lines.

ggPredict(fit1,digits=1)

predict3d(fit1,radius=0.05)
rglwidget(elementId = "1st")

You can see the live 3d plot at http://rpubs.com/cardiomoon/471347.

The second model has two continuous variables as explanatory variables. You can change the labels and the relative x position and the y position.

fit2=lm(mpg~wt*hp,data=mtcars)
ggPredict(fit2,labels=paste0("label",1:3),xpos=c(0.3,0.4,0.3))

predict3d(fit2)
rglwidget(elementId = "2nd")

Generalized Linear Models

You can draw generalized linear models.

require(TH.data)
fit3=glm(cens~pnodes*age*horTh,data=GBSG2,family=binomial)
ggPredict(fit3,se=TRUE,show.text = FALSE)

predict3d(fit3,radius=0.5)
rglwidget(elementId = "3rd")

Local Polynomial Regression Fitting

You can draw the loess model.

fit=loess(mpg~hp*wt,data=mtcars)
ggPredict(fit)

predict3d(fit,radius=2)
rglwidget(elementId = "4th")

Play with predict3d()

Once you have create a model with predict3d(), you can move your object with your mouse or R codes. For example, You can rotate you object with this R codes.

start <- proc.time()[3]
while ((i <- 36*(proc.time()[3] - start)) < 360) {
     rgl.viewpoint(i, i/4); 
}
play3d(spin3d(axis = c(1, 0, 0), rpm = 30), duration = 2)

You can save your 3d plot as a figure file or pdf file.

rgl.bringtotop()
rgl.snapshot("fig1.png")
rgl.postscript("fig2.pdf","pdf")

For more information about package rgl, please read the package vignette at: https://CRAN.R-project.org/package=rgl/vignettes/rgl.html

News

predict3d version 0.1.0

(2019-Mar-6)

New function ggPredict() and predict3d() added

New function fit2newdata() added

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("predict3d")

0.1.0 by Keon-Woong Moon, 5 months ago


https://github.com/cardiomoon/predict3d


Report a bug at https://github.com/cardiomoon/predict3d/issues


Browse source code at https://github.com/cran/predict3d


Authors: Keon-Woong Moon [aut, cre]


Documentation:   PDF Manual  


GPL-2 license


Imports ggplot2, rgl, dplyr, ggiraphExtra, modelr, prediction, purrr, rlang, stringr, magrittr, stats, TH.data, reshape2, plyr, tidyr

Suggests knitr, rmarkdown


See at CRAN