Scatterplot with marginal distributions and statistical results
Scatterplots from ggplot2
combined with marginal
histograms/boxplots/density plots with statistical details added as a
subtitle.
ggscatterstats( data, x, y, type = "parametric", conf.level = 0.95, bf.prior = 0.707, bf.message = TRUE, tr = 0.2, k = 2L, results.subtitle = TRUE, label.var = NULL, label.expression = NULL, point.args = list(size = 3, alpha = 0.4), point.width.jitter = 0, point.height.jitter = 0, point.label.args = list(size = 3, max.overlaps = 1e+06), smooth.line.args = list(size = 1.5, color = "blue"), marginal = TRUE, marginal.type = "densigram", marginal.size = 5, xfill = "#009E73", yfill = "#D55E00", xlab = NULL, ylab = NULL, title = NULL, subtitle = NULL, caption = NULL, ggtheme = ggplot2::theme_bw(), ggstatsplot.layer = TRUE, ggplot.component = NULL, output = "plot", ... )
data |
A dataframe (or a tibble) from which variables specified are to be taken. Other data types (e.g., matrix,table, array, etc.) will not be accepted. |
x |
The column in |
y |
The column in |
type |
A character specifying the type of statistical approach. Four possible options:
Corresponding abbreviations are also accepted: |
conf.level |
Scalar between |
bf.prior |
A number between |
bf.message |
Logical that decides whether to display Bayes Factor in
favor of the null hypothesis. This argument is relevant only for
parametric test (Default: |
tr |
Trim level for the mean when carrying out |
k |
Number of digits after decimal point (should be an integer)
(Default: |
results.subtitle |
Decides whether the results of statistical tests are
to be displayed as a subtitle (Default: |
label.var |
Variable to use for points labels. Can be entered either as
a bare expression (e.g, |
label.expression |
An expression evaluating to a logical vector that
determines the subset of data points to label. This argument can be entered
either as a bare expression (e.g., |
point.args |
A list of additional aesthetic arguments to be passed
to |
point.width.jitter, point.height.jitter |
Degree of jitter in |
point.label.args |
A list of additional aesthetic arguments to be passed
to |
smooth.line.args |
A list of additional aesthetic arguments to be passed
to |
marginal |
Decides whether marginal distributions will be plotted on
axes using |
marginal.type |
Type of marginal distribution to be plotted on the axes
( |
marginal.size |
Integer describing the relative size of the marginal
plots compared to the main plot. A size of |
xfill, yfill |
Character describing color fill for |
xlab |
Labels for |
ylab |
Labels for |
title |
The text for the plot title. |
subtitle |
The text for the plot subtitle. Will work only if
|
caption |
The text for the plot caption. |
ggtheme |
A function, |
ggstatsplot.layer |
Logical that decides whether |
ggplot.component |
A |
output |
Character that describes what is to be returned: can be
|
... |
Currently ignored. |
If you set marginal = TRUE
, the resulting plot can not be further
modified with ggplot2
functions since it is no longer a ggplot
object. In
case you want a ggplot
object, set marginal = FALSE
. Also have a look at
the ggplot.component
argument.
The plot uses ggrepel::geom_label_repel
to attempt to keep labels
from over-lapping to the largest degree possible. As a consequence plot
times will slow down massively (and the plot file will grow in size) if you
have a lot of labels that overlap.
# to get reproducible results from bootstrapping set.seed(123) library(ggstatsplot) # creating dataframe with rownames converted to a new column mtcars_new <- as_tibble(mtcars, rownames = "car") # simple function call with the defaults if (require("ggExtra")) { ggscatterstats( data = mtcars_new, x = wt, y = mpg, label.var = car, label.expression = wt < 4 & mpg < 20, # making further customization with `ggplot2` functions ggplot.component = list(ggplot2::geom_rug(sides = "b")) ) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.