Learn R Programming

R package predict3d

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.

Package Installation

You can install predict3d package from CRAN.

install.packages("predict3d")

You can install the developmental version of 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) {
     view3d(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

You can see the following vignettes published on rpubs.com

Drawing the multiple regression models(Part I)

Part II. Transforming variables

Copy Link

Version

Install

install.packages('predict3d')

Monthly Downloads

412

Version

0.1.6

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

KeonWoong Moon

Last Published

October 1st, 2025

Functions in predict3d (0.1.6)

seq_range

Create a sequence over the range of a vector
myseq

Generate regular sequences of desired length between minimum and maximal values
slope2angle

Make angle data with slope data
getNewFormula

Make new formula
calEquation

calculated slope and intercept from object of class lm
beNumeric

Whether a string vector can be converted to numeric
gg_color_hue

Pick default color
fit2newdata

Make a new data set for prediction
add_lines

Add lines with labels to pre-existing ggplot
getAspectRatio

Get aspect information of a ggplot
expand.grid2

expand.grid with two data.frames
getMeans

calculate mean values of two consecutive number
ggPredict

Visualize predictions from the multiple regression models.
number2group

Convert a numeric vector into groups
rank2colors

Rank a numeric vector using proportional table and returns character vector of names of color using palette
rank2group2

Rank a numeric vector using proportional table and returns a new ordinal vector
predict3d

Draw 3d predict plot using package `rgl`
restoreNames

Restore factors in variable name as numeric
restoreData3

Restore data from arithmetic operator
seekNamesDf

Find variable names in data.frame
revOperator

get opposite arithmetic operator
is.mynumeric

Decide whether a vector can be treated as a numeric variable
theme_bw2

theme_bw with no grid
string2pattern

change string to pattern
restoreData

Restore factors in data.frame as numeric
restoreData2

restore data column with I() function