| Type: | Package | 
| Title: | Draw Three Dimensional Predict Plot Using Package 'rgl' | 
| Version: | 0.1.6 | 
| URL: | https://github.com/cardiomoon/predict3d | 
| BugReports: | https://github.com/cardiomoon/predict3d/issues | 
| Description: | 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). | 
| Depends: | R (≥ 3.3.0) | 
| License: | GPL-2 | 
| Encoding: | UTF-8 | 
| Imports: | ggplot2(≥ 4.0.0), rgl(≥ 1.0.1), dplyr, ggiraphExtra, modelr, purrr, rlang, stringr, magrittr, stats, reshape2, plyr, tidyr | 
| RoxygenNote: | 7.3.3 | 
| Suggests: | moonBook, TH.data, knitr, rmarkdown | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2025-10-01 06:12:55 UTC; cardiomoon | 
| Author: | Keon-Woong Moon [aut, cre] | 
| Maintainer: | Keon-Woong Moon <cardiomoon@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-10-01 06:30:02 UTC | 
Add lines with labels to pre-existing ggplot
Description
Add lines with labels to pre-existing ggplot
Usage
add_lines(
  p,
  df,
  xpos = 0.3,
  add.coord.fixed = TRUE,
  lty = NULL,
  color = NULL,
  size = 0.5,
  add_theme_bw2 = TRUE,
  ...
)
Arguments
| p | An object of class ggplot | 
| df | A data.frame. Required columns are slope, intercept and label | 
| xpos | A numeric. Relative horizontal position | 
| add.coord.fixed | Logical. Whether or not add coord_fixed() function | 
| lty | line type | 
| color | line color | 
| size | line size | 
| add_theme_bw2 | logical Whether or not add theme_bw2() | 
| ... | Further arguments to be passed to geom_text | 
Examples
require(ggplot2)
fit=lm(mpg~wt*hp,data=mtcars)
df=calEquation(fit)
p=ggplot(data=mtcars,aes(x=wt,y=mpg))
add_lines(p,df)
add_lines(p,df,lty=1:3,color=1:3,size=1)
fit=lm(mpg~wt*vs,data=mtcars)
df=calEquation(fit)
p=ggplot(data=mtcars)+geom_point(aes(x=wt,y=mpg))
add_lines(p,df)
add_lines(p,df,lty=1:2,color=1:2,size=1)+theme_bw()
Whether a string vector can be converted to numeric
Description
Whether a string vector can be converted to numeric
Usage
beNumeric(x)
Arguments
| x | A string vector | 
Examples
x=c("age","22.5","11/2")
beNumeric(x)
calculated slope and intercept from object of class lm
Description
calculated slope and intercept from object of class lm
Usage
calEquation(
  fit,
  mode = 1,
  pred = NULL,
  modx = NULL,
  modx.values = NULL,
  label = NULL,
  maxylev = 6,
  digits = 2
)
Arguments
| fit | An object of class lm | 
| mode | A numeric | 
| pred | name of predictor variable | 
| modx | name of modifier variable | 
| modx.values | Numeric. Values of modifier variable | 
| label | A character string | 
| maxylev | maximum length of unique value of variable to be treated as a categorial variable | 
| digits | Integer indicating the number of decimal places | 
Examples
fit=lm(mpg~wt*hp+carb,data=mtcars)
calEquation(fit)
calEquation(fit,pred="hp")
expand.grid with two data.frames
Description
expand.grid with two data.frames
Usage
expand.grid2(df1, df2)
Arguments
| df1 | A data.frame | 
| df2 | A data.frame | 
Make a new data set for prediction
Description
Make a new data set for prediction
Usage
fit2newdata(
  fit,
  predictors,
  mode = 1,
  pred.values = NULL,
  modx.values = NULL,
  mod2.values = NULL,
  colorn = 3,
  maxylev = 6,
  summarymode = 1
)
Arguments
| fit | An object of class "lm", "glm" or "loess" | 
| predictors | Names of predictor variables in string | 
| mode | A numeric. Useful when the variables are numeric. If 1, c(-1,0,1)*sd + mean is used. If 2, the 16th, 50th, 84th percentile values used. If 3 sequence over a the range of a vector used | 
| pred.values | For which values of the predictors should be used? Default is NULL. If NULL, 20 seq_range is used. | 
| modx.values | For which values of the moderator should lines be plotted? Default is NULL. If NULL, then the customary +/- 1 standard deviation from the mean as well as the mean itself are used for continuous moderators. If the moderator is a factor variable and modx.values is NULL, each level of the factor is included. | 
| mod2.values | For which values of the second moderator should lines be plotted? Default is NULL. If NULL, then the customary +/- 1 standard deviation from the mean as well as the mean itself are used for continuous moderators. If the moderator is a factor variable and modx.values is NULL, each level of the factor is included. | 
| colorn | The number of regression lines when the modifier variable(s) are numeric. | 
| maxylev | An integer indicating the maximum number of levels of numeric variable be treated as a categorical variable | 
| summarymode | An integer indicating method of extracting typical value of variables. If 1, typical() is used.If 2, mean() is used. | 
Examples
fit=lm(mpg~hp*wt*cyl+carb+am,data=mtcars)
fit2newdata(fit,predictors=c("hp","wt","am"))
fit2newdata(fit,predictors=c("hp","wt","cyl"))
fit2newdata(fit,predictors=c("hp"))
fit2newdata(fit,predictors=c("hp","wt"))
## Not run: 
fit=loess(mpg~hp*wt*am,data=mtcars)
fit2newdata(fit,predictors=c("hp"))
mtcars$engine=ifelse(mtcars$vs==0,"V-shaped","straight")
fit=lm(mpg~wt*engine,data=mtcars)
fit2newdata(fit,predictors=c("wt","engine"))
fit=lm(mpg~wt*factor(vs),data=mtcars)
fit2newdata(fit,predictors=c("wt","vs"))
fit2newdata(lm(mpg~hp*wt,data=mtcars),predictors=c("hp","wt"),mode=3,colorn=30)
fit=lm(mpg~hp*log(wt),data=mtcars)
fit2newdata(fit,predictors=c("hp","log(wt)"))
fit=lm(mpg~hp*wt*factor(vs),data=mtcars)
fit2newdata(fit,predictors=c("hp"))
## End(Not run)
require(moonBook)
fit=lm(log(NTAV)~I(age^2)*sex,data=radial)
fit2newdata(fit,predictors=c("I(age^2)","sex"))
Get aspect information of a ggplot
Description
Get aspect information of a ggplot
Usage
getAspectRatio(p)
Arguments
| p | A ggplot object | 
Examples
p<-ggplot2::ggplot(data=mtcars,ggplot2::aes(x=.data$wt,y=.data$mpg))+ggplot2::geom_point()
getAspectRatio(p)
calculate mean values of two consecutive number
Description
calculate mean values of two consecutive number
Usage
getMeans(x)
Arguments
| x | A numeric vector | 
Examples
x=c(50,60,70)
getMeans(x)
Make new formula
Description
Make new formula
Usage
getNewFormula(fit, predictors = NULL)
Arguments
| fit | An object of class lm or glm | 
| predictors | Names of variables to exclude | 
Examples
fit=lm(mpg~factor(cyl)*factor(am)+wt+carb,data=mtcars)
getNewFormula(fit,predictors=c("cyl","wt"))
fit=lm(Sepal.Length~Sepal.Width*Petal.Length+Species,data=iris)
getNewFormula(fit,predictors=c("Petal.Length"))
fit=lm(mpg~hp*wt*factor(cyl),data=mtcars)
getNewFormula(fit,predictors=c("hp","cyl"))
fit=loess(mpg~hp*wt,data=mtcars)
getNewFormula(fit,predictors=c("hp","wt"))
Visualize predictions from the multiple regression models.
Description
Visualize predictions from the multiple regression models.
Usage
ggPredict(
  fit,
  pred = NULL,
  modx = NULL,
  mod2 = NULL,
  modx.values = NULL,
  mod2.values = NULL,
  dep = NULL,
  mode = 1,
  colorn = 3,
  maxylev = 6,
  show.point = getOption("ggPredict.show.point", TRUE),
  show.error = FALSE,
  error.color = "red",
  jitter = NULL,
  se = FALSE,
  alpha = 0.1,
  show.text = TRUE,
  add.modx.values = TRUE,
  add.loess = FALSE,
  labels = NULL,
  angle = NULL,
  xpos = NULL,
  vjust = NULL,
  digits = 2,
  facet.modx = FALSE,
  facetbycol = TRUE,
  plot = TRUE,
  summarymode = 1,
  ...
)
Arguments
| fit | An object of class "lm" or "glm" | 
| pred | The name of predictor variable | 
| modx | Optional. The name of moderator variable | 
| mod2 | Optional. The name of second moderator variable | 
| modx.values | For which values of the moderator should lines be plotted? Default is NULL. If NULL, then the customary +/- 1 standard deviation from the mean as well as the mean itself are used for continuous moderators. If the moderator is a factor variable and modx.values is NULL, each level of the factor is included. | 
| mod2.values | For which values of the second moderator should lines be plotted? Default is NULL. If NULL, then the customary +/- 1 standard deviation from the mean as well as the mean itself are used for continuous moderators. If the moderator is a factor variable and modx.values is NULL, each level of the factor is included. | 
| dep | Optional. The name of dependent variable | 
| mode | A numeric. Useful when the variables are numeric. If 1, c(-1,0,1)*sd + mean is used. If 2, the 14th, 50th, 86th percentile values used. If 3 sequence over a the range of a vector used | 
| colorn | The number of regression lines when the modifier variable(s) are numeric. | 
| maxylev | An integer indicating the maximum number of levels of numeric variable be treated as a categorical variable | 
| show.point | Logical. Whether or not add points | 
| show.error | Logical. Whether or not show error | 
| error.color | color of error. dafault value is "red" | 
| jitter | logical Whether or not use geom_jitter | 
| se | Logical. Whether or not add confidence interval | 
| alpha | A numeric. Transparency | 
| show.text | Logical. Whether or not add regression equation as label | 
| add.modx.values | Logical. Whether or not add moderator values to regression equation | 
| add.loess | Logical. Whether or not add loess line | 
| labels | labels on regression lines | 
| angle | angle of text | 
| xpos | x axis position of label | 
| vjust | vertical alignment of labels | 
| digits | integer indicating the number of decimal places | 
| facet.modx | Create separate panels for each level of the moderator? Default is FALSE | 
| facetbycol | Logical. | 
| plot | Logical. Should a plot of the results be printed? Default is TRUE. | 
| summarymode | An integer indicating method of extracting typical value of variables. If 1, typical() is used.If 2, mean() is used. | 
| ... | additional arguments to be passed to geom_text | 
Examples
fit=loess(mpg~hp*wt*am,data=mtcars)
ggPredict(fit)
ggPredict(fit,hp)
## Not run: 
ggPredict(fit,hp,wt)
fit=lm(mpg~wt*hp-1,data=mtcars)
ggPredict(fit,xpos=0.7)
fit=lm(mpg~hp*wt,data=mtcars)
ggPredict(fit)
ggPredict(fit,labels=paste0("label",1:3),xpos=c(0.3,0.6,0.4))
ggPredict(fit,se=TRUE)
ggPredict(fit,mode=3,colorn=40,show.text=FALSE)
fit=lm(log(mpg)~hp*wt,data=mtcars)
ggPredict(fit,dep=mpg)
fit=lm(mpg~hp*wt*cyl,data=mtcars)
ggPredict(fit,modx=wt,modx.values=c(2,3,4,5),mod2=cyl,show.text=FALSE)
ggPredict(fit,hp,wt,show.point=FALSE,se=TRUE,xpos=0.5)
ggPredict(fit,modx=wt,xpos=0.3)
ggPredict(fit)
mtcars$engine=ifelse(mtcars$vs==0,"V-shaped","straight")
fit=lm(mpg~wt*engine,data=mtcars)
ggPredict(fit)
require(TH.data)
fit=glm(cens~pnodes*horTh,data=GBSG2,family=binomial)
ggPredict(fit,pnodes,horTh,se=TRUE,xpos=c(0.6,0.3),angle=c(40,60),vjust=c(2,-0.5))
fit1=glm(cens~pnodes,data=GBSG2,family=binomial)
ggPredict(fit1,vjust=1.5,angle=45)
fit3=glm(cens~pnodes*age,data=GBSG2,family=binomial)
ggPredict(fit3,pred=pnodes,modx=age,mode=3,colorn=10,show.text=FALSE)
fit2=glm(cens~pnodes*age*horTh,data=GBSG2,family=binomial)
ggPredict(fit2,pred=pnodes,modx=age,mod2=horTh,mode=3,colorn=10,show.text=FALSE)
fit=lm(mpg~log(hp)*wt,data=mtcars)
ggPredict(fit,hp,wt)
fit=lm(mpg~hp*wt+disp+gear+carb+am,data=mtcars)
ggPredict(fit,disp,gear,am)
library(moonBook)
fit=lm(weight~I(height^3)+I(height^2)+height+sex,data=radial)
ggPredict(fit)
predict3d(fit)
## End(Not run)
Pick default color
Description
Pick default color
Usage
gg_color_hue(n)
Arguments
| n | An integer | 
Decide whether a vector can be treated as a numeric variable
Description
Decide whether a vector can be treated as a numeric variable
Usage
is.mynumeric(x, maxylev = 6)
Arguments
| x | A vector | 
| maxylev | An integer indicating the maximum number of levels of numeric variable be treated as a categorical variable | 
Generate regular sequences of desired length between minimum and maximal values
Description
Generate regular sequences of desired length between minimum and maximal values
Usage
myseq(x, length = 20)
Arguments
| x | a numeric vector | 
| length | desired length of the sequence | 
Convert a numeric vector into groups
Description
Convert a numeric vector into groups
Usage
number2group(
  x,
  mode = 1,
  values = NULL,
  silent = FALSE,
  label = "label",
  digits = 2,
  colorn = 3
)
Arguments
| x | A numeric vector | 
| mode | A numeric. If 1, mean(x) +c(-1,0,1)*sd(x) are used. If 2, quantile(x,probs=c(0.14,0.5,0.86),type=6) are used. If 3, values are used | 
| values | A numeric vector | 
| silent | A logical. Whether table of result will be shown | 
| label | A character string | 
| digits | integer indicating the number of decimal places | 
| colorn | The number of regression lines when the modifier variable(s) are numeric | 
Examples
number2group(iris$Sepal.Length,label="Sepal.Length")
x=number2group(mtcars$wt,label="wt")
x
Draw 3d predict plot using package 'rgl'
Description
Draw 3d predict plot using package 'rgl'
Usage
predict3d(
  fit,
  pred = NULL,
  modx = NULL,
  mod2 = NULL,
  dep = NULL,
  xlab = NULL,
  ylab = NULL,
  zlab = NULL,
  width = 640,
  colorn = 20,
  maxylev = 6,
  se = FALSE,
  show.summary = FALSE,
  overlay = NULL,
  show.error = FALSE,
  show.legend = FALSE,
  bg = NULL,
  type = "s",
  radius = NULL,
  palette = NULL,
  palette.reverse = TRUE,
  color = "red",
  show.subtitle = TRUE,
  show.plane = TRUE,
  plane.color = "steelblue",
  plane.alpha = 0.5,
  summarymode = 1,
  ...
)
Arguments
| fit | A model object for which prediction is desired. | 
| pred | The name of predictor variable | 
| modx | Optional. The name of moderator variable | 
| mod2 | Optional. The name of second moderator variable | 
| dep | Optional. The name of dependent variable | 
| xlab | x-axis label. | 
| ylab | y-axis label. | 
| zlab | z-axis label. | 
| width | the width of device | 
| colorn | An integer giving the desired number of intervals. Non-integer values are rounded down. | 
| maxylev | Maximal length of unique values of y axis variable to be treated as a categorical variable. | 
| se | Logical. Whether or not show se. Only effective when the y-axis variable is a categorical one. | 
| show.summary | Logical. Whether or not show statistical summary | 
| overlay | Logical. Whether or not overlay plots | 
| show.error | Logical. Whether or not show error | 
| show.legend | Logical. Whether or not show legend | 
| bg | Character. Background color of plot | 
| type | For the default method, a single character indicating the type of item to plot. Supported types are: 'p' for points, 's' for spheres, 'l' for lines, 'h' for line segments from z = 0, and 'n' for nothing. For the mesh3d method, one of 'shade', 'wire', or 'dots'. Partial matching is used. | 
| radius | The size of sphere | 
| palette | Name of color palette | 
| palette.reverse | Logical. Whether or not reverse the palette order | 
| color | Default color. Color is used when the palette is NULL | 
| show.subtitle | Logical. If true, show regression call as subtitle | 
| show.plane | Logical. If true, show regression plane | 
| plane.color | Name of color of regression plane | 
| plane.alpha | Transparency scale of regression plane | 
| summarymode | An integer indicating method of extracting typical value of variables. If 1, typical() is used.If 2, mean() is used. | 
| ... | additional parameters which will be passed to plot3d | 
Examples
fit=lm(mpg~hp*wt,data=mtcars)
predict3d(fit,show.error=TRUE)
fit=lm(log(mpg)~hp*wt,data=mtcars)
predict3d(fit,dep=mpg)
## Not run: 
fit=lm(Sepal.Length~Sepal.Width*Species,data=iris)
predict3d(fit)
require(TH.data)
fit=glm(cens~pnodes*age*horTh,data=GBSG2,family=binomial)
predict3d(fit)
mtcars$engine=ifelse(mtcars$vs==0,"V-shaped","straight")
fit=lm(mpg~wt*engine,data=mtcars)
predict3d(fit)
fit=loess(mpg~hp*wt,data=mtcars)
predict3d(fit,radius=4)
states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
fit=lm(Murder~Population+Illiteracy,data=states)
predict3d(fit)
predict3d(fit,radius=200)
fit=lm(mpg~cyl+hp+am,data=mtcars)
predict3d(fit)
## End(Not run)
Rank a numeric vector using proportional table and returns character vector of names of color using palette
Description
Rank a numeric vector using proportional table and returns character vector of names of color using palette
Usage
rank2colors(x, palette = "Blues", reverse = TRUE, color = "red")
Arguments
| x | A numeric vector | 
| palette | Name of the color palette | 
| reverse | Logical. Whether or not reverse the order of the color palette | 
| color | Default color when palette is NULL | 
Examples
rank2colors(mtcars$wt,palette="Blues")
Rank a numeric vector using proportional table and returns a new ordinal vector
Description
Rank a numeric vector using proportional table and returns a new ordinal vector
Usage
rank2group2(x, k = 4)
Arguments
| x | a numeric vector | 
| k | a integer specifies how many groups you want to classify. default value is 4 | 
Restore factors in data.frame as numeric
Description
Restore factors in data.frame as numeric
Usage
restoreData(data)
Arguments
| data | A data.frame | 
Examples
fit=lm(mpg~factor(cyl)*factor(am),data=mtcars)
fit=lm(mpg~wt*factor(am),data=mtcars)
fit=lm(mpg~wt*hp,data=mtcars)
restoreData(fit$model)
restore data column with I() function
Description
restore data column with I() function
Usage
restoreData2(df)
Arguments
| df | A data.frame | 
Examples
fit=lm(mpg~I(cyl^(1/2))*am,data=mtcars)
restoreData2(fit$model)
fit=lm(mpg~sqrt(hp)*log(wt)*am,data=mtcars)
restoreData2(fit$model)
Restore data from arithmetic operator
Description
Restore data from arithmetic operator
Usage
restoreData3(df, changeLabel = FALSE)
Arguments
| df | A data.frame | 
| changeLabel | logical | 
Examples
fit=lm(2^mpg~hp*wt,data=mtcars)
summary(fit)
restoreData3(fit$model)
Restore factors in variable name as numeric
Description
Restore factors in variable name as numeric
Usage
restoreNames(x)
Arguments
| x | character vector | 
Examples
restoreNames(c("factor(cyl)","am"))
restoreNames(c("I(age^2)","am","100/mpg","cyl^1/2","mpg2","sex + 0.5"))
get opposite arithmetic operator
Description
get opposite arithmetic operator
Usage
revOperator(operator)
Arguments
| operator | A character | 
Find variable names in data.frame
Description
Find variable names in data.frame
Usage
seekNamesDf(vars, df)
Arguments
| vars | variable names to find | 
| df | A data.frame | 
Value
A character vector
Create a sequence over the range of a vector
Description
Create a sequence over the range of a vector
Usage
seq_range(x, n = 2)
Arguments
| x | A numeric vector | 
| n | An integer specifying the length of sequence (i.e., number of points across the range of x) | 
Examples
seq_range(1:5,n=3)
Make angle data with slope data
Description
Make angle data with slope data
Usage
slope2angle(
  df,
  fit,
  ytransform = 0,
  predc,
  temppredc,
  modxc,
  yvar,
  p,
  method = "lm",
  xpos = NULL,
  vjust = NULL,
  digits = 3,
  facetno = NULL,
  add.modx.values = TRUE
)
Arguments
| df | A data.frame | 
| fit | An object of class "lm" or "glm" | 
| ytransform | Numeric. If 1, log transformation of dependent variable, If -1, exponential transformation | 
| predc | Name of predictor variable | 
| temppredc | Name of predictor variable in regression equation | 
| modxc | Name of moderator variable | 
| yvar | Name of dependent variable | 
| p | An object of class ggplot | 
| method | String. Choices are one of "lm" and "glm". | 
| xpos | The relative x-axis position of labels. Should be within 0 to 1 | 
| vjust | vjust | 
| digits | integer indicating the number of decimal places | 
| facetno | The number of facets | 
| add.modx.values | Whether add name of moderator variable | 
change string to pattern
Description
change string to pattern
Usage
string2pattern(string)
Arguments
| string | A character vector | 
Examples
string=c("I(age^2)","factor(cyl)","log(mpg)")
string2pattern(string)
theme_bw with no grid
Description
theme_bw with no grid
Usage
theme_bw2()