dplot3_box | R Documentation |
Draw interactive boxplots or violin plots using plotly
dplot3_box(
x,
time = NULL,
time.bin = c("year", "quarter", "month", "day"),
type = c("box", "violin"),
group = NULL,
x.transform = c("none", "scale", "minmax"),
main = NULL,
xlab = "",
ylab = NULL,
col = NULL,
alpha = 0.6,
bg = NULL,
plot.bg = NULL,
theme = rtTheme,
palette = rtPalette,
boxpoints = "outliers",
quartilemethod = "linear",
xlim = NULL,
ylim = NULL,
violin.box = TRUE,
orientation = "v",
annotate_n = FALSE,
annotate_n_y = 1,
annotate_mean = FALSE,
annotate_meansd = FALSE,
annotate_meansd_y = 1,
annotate.col = theme$labs.col,
xnames = NULL,
group.lines = FALSE,
group.lines.dash = "dot",
group.lines.col = NULL,
group.lines.alpha = 0.5,
labelify = TRUE,
order.by.fn = NULL,
font.size = 16,
ylab.standoff = 18,
legend = NULL,
legend.col = NULL,
legend.xy = NULL,
legend.orientation = "v",
legend.xanchor = "auto",
legend.yanchor = "auto",
xaxis.type = "category",
cataxis_tickangle = "auto",
margin = list(b = 65, l = 65, t = 50, r = 12, pad = 0),
automargin.x = TRUE,
automargin.y = TRUE,
boxgroupgap = NULL,
hovertext = NULL,
show_n = FALSE,
pvals = NULL,
htest = "none",
htest.compare = 0,
htest.y = NULL,
htest.annotate = TRUE,
htest.annotate.x = 0,
htest.annotate.y = -0.065,
htest.star.col = theme$labs.col,
htest.bracket.col = theme$labs.col,
starbracket.pad = c(0.04, 0.05, 0.09),
use.plotly.group = FALSE,
width = NULL,
height = NULL,
displayModeBar = TRUE,
modeBar.file.format = "svg",
filename = NULL,
file.width = 500,
file.height = 500,
file.scale = 1,
...
)
x |
Vector or List of vectors: Input |
time |
Date or date-time vector |
time.bin |
Character: "year", "quarter", "month", or "day". Period to bin by |
type |
Character: "box" or "violin" |
group |
Factor to group by |
x.transform |
Character: "none", "scale", or "minmax" to use raw values, scaled and centered values or min-max normalized to 0-1, respectively. Transform is applied to each variable before grouping, so that groups are comparable |
main |
Character: Plot title. |
xlab |
Character: x-axis label. |
ylab |
Character: y-axis label. |
col |
Color, vector: Color for boxes. If NULL, which will draw
colors from |
alpha |
Float (0, 1]: Transparency for box colors. |
bg |
Color: Background color. Default = "white" |
plot.bg |
Color: Background color for plot area. |
theme |
Character: Theme to use: Run |
palette |
Character: Name of rtemis palette to use.
Default = "rtCol1". Only used if |
boxpoints |
Character or FALSE: "all", "suspectedoutliers", "outliers" See https://plotly.com/r/box-plots/#choosing-the-algorithm-for-computing-quartiles |
quartilemethod |
Character: "linear", "exclusive", "inclusive" |
xlim |
Numeric vector: x-axis limits |
ylim |
Numeric vector: y-axis limits |
violin.box |
Logical: If TRUE and type is "violin" show box within violin plot |
orientation |
Character: "v" or "h" for vertical, horizontal |
annotate_n |
Logical: If TRUE, annotate with N in each box |
annotate_n_y |
Numeric: y position for |
annotate_mean |
Logical: If TRUE, annotate with mean of each box |
annotate_meansd |
Logical: If TRUE, annotate with mean (SD) of each box |
annotate_meansd_y |
Numeric: y position for |
annotate.col |
Color for annotations |
xnames |
Character, vector, length = NROW(x): x-axis names. Default = NULL, which tries to set names appropriately |
group.lines |
Logical: If TRUE, add separating lines between groups of boxplots |
group.lines.dash |
Character: "solid", "dot", "dash", "longdash", "dashdot", or "longdashdot" |
group.lines.col |
Color for |
group.lines.alpha |
Numeric: transparency for |
labelify |
Logical: If TRUE, labelify x names |
order.by.fn |
Function: If defined, order boxes by increasing value of this function (e.g. median). |
font.size |
Float: Font size for all labels. |
ylab.standoff |
Numeric: Standoff for y-axis label |
legend |
Logical: If TRUE, draw legend. Default = TRUE |
legend.col |
Color: Legend text color. Default = NULL, determined by the theme |
legend.xy |
Float, vector, length 2: Relative x, y position for legend. |
legend.orientation |
"v" or "h" for vertical, horizontal |
legend.xanchor |
Character: Legend's x anchor: "left", "center", "right", "auto" |
legend.yanchor |
Character: Legend's y anchor: "top", "middle", "bottom", "auto" |
xaxis.type |
Character: "linear", "log", "date", "category", "multicategory" |
cataxis_tickangle |
Numeric: Angle for categorical axis tick labels |
margin |
Named list: plot margins.
Default = |
automargin.x |
Logical: If TRUE, automatically set x-axis amrgins |
automargin.y |
Logical: If TRUE, automatically set y-axis amrgins |
boxgroupgap |
Numeric: Sets the gap (in plot fraction) between boxes of the same location coordinate |
hovertext |
Character vector: Text to show on hover for each data point |
show_n |
Logical: If TRUE, show N in each box |
pvals |
Numeric vector: Precomputed p-values. Should correspond to each box.
Bypasses |
htest |
Character: e.g. "t.test", "wilcox.test" to compare each box to
the first box. If grouped, compare within each group to the first box.
If p-value of test is less than |
htest.compare |
Integer: 0: Compare all distributions against the first one;
2: Compare every second box to the one before it. Requires |
htest.y |
Numeric: y coordinate for |
htest.annotate |
Logical: if TRUE, include htest annotation |
htest.annotate.x |
Numeric: x-axis paper coordinate for htest annotation |
htest.annotate.y |
Numeric: y-axis paper coordinate for htest annotation |
htest.star.col |
Color for htest annotation stars |
htest.bracket.col |
Color for htest annotation brackets |
starbracket.pad |
Numeric: Padding for htest annotation brackets |
use.plotly.group |
If TRUE, use plotly's |
width |
Numeric: Force plot size to this width. Default = NULL, i.e. fill available space |
height |
Numeric: Force plot size to this height. Default = NULL, i.e. fill available space |
displayModeBar |
Logical: If TRUE, show plotly's modebar |
modeBar.file.format |
Character: "svg", "png", "jpeg", "pdf" |
filename |
Character: Path to file to save static plot. |
file.width |
Integer: File width in pixels for when |
file.height |
Integer: File height in pixels for when |
file.scale |
Numeric: If saving to file, scale plot by this number |
... |
Additional arguments passed to theme |
For multiple box plots, the recommendation is:
x=dat[, columnindex]
for multiple variables of a data.frame
x=list(a=..., b=..., etc.)
for multiple variables of potentially
different length
x=split(var, group)
for one variable with multiple groups: group names
appear below boxplots
x=dat[, columnindex], group = factor
for grouping multiple variables:
group names appear in legend
If orientation == "h"
, xlab
is applied to y-axis and vice versa.
Similarly, x.axist.type
applies to y-axis - this defaults to
"category" and would not normally need changing.
E.D. Gennatas
## Not run:
# A.1 Box plot of 4 variables
dplot3_box(iris[, 1:4])
# A.2 Grouped Box plot
dplot3_box(iris[, 1:4], group = iris$Species)
dplot3_box(iris[, 1:4], group = iris$Species, annotate_n = TRUE)
# B. Boxplot binned by time periods
# Synthetic data with an instantenous shift in distributions
set.seed(2021)
dat1 <- data.frame(alpha = rnorm(200, 0), beta = rnorm(200, 2), gamma = rnorm(200, 3))
dat2 <- data.frame(alpha = rnorm(200, 5), beta = rnorm(200, 8), gamma = rnorm(200, -3))
x <- rbind(dat1, dat2)
startDate <- as.Date("2019-12-04")
endDate <- as.Date("2021-03-31")
time <- seq(startDate, endDate, length.out = 400)
dplot3_box(x[, 1], time, "year", ylab = "alpha")
dplot3_box(x, time, "year", legend.xy = c(0, 1))
dplot3_box(x, time, "quarter", legend.xy = c(0, 1))
dplot3_box(x, time, "month",
legend.orientation = "h",
legend.xy = c(0, 1),
legend.yanchor = "bottom"
)
# (Note how the boxplots widen when the period includes data from both dat1 and dat2)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.