plotly objectR/add_classification.R
add_classification.RdSee classification() for an explication on how the classification is done.
add_classification(
p,
x = NULL,
y = NULL,
...,
data = NULL,
inherit = TRUE,
sd,
lcl = NULL,
ucl = NULL,
threshold,
reference = 0,
prob = 0.9,
size = 20,
link = c("identity", "log", "logit"),
detailed = TRUE,
signed = TRUE,
labels = class_labels(lang = "en", detailed = detailed, signed = signed),
text = NULL,
hoverinfo = "text",
ref_label = "reference",
ref_colour = "#C04384"
)a plotly object
the x variable.
the y variable.
Arguments (i.e., attributes) passed along to the trace type.
See schema() for a list of acceptable attributes for a given trace type
(by going to traces -> type -> attributes). Note that attributes
provided at this level may override other arguments
(e.g. plot_ly(x = 1:10, y = 1:10, color = I("red"), marker = list(color = "blue"))).
A data frame (optional) or crosstalk::SharedData object.
inherit attributes from plot_ly()?
the variable of the standard error on the link scale.
A vector of lower confidence limits.
A vector of upper confidence limits.
A vector of either 1 or 2 thresholds.
A single threshold will be transformed into
reference + c(-abs(threshold), abs(threshold)).
The null hypothesis. Defaults to 0.
The coverage of the confidence interval when calculated from the
mean y and standard error sd.
Note that the function assumes a normal distribution at the link scale.
Size of the point symbol.
the link between the natural scale and the link scale.
Defaults to "identity".
TRUE indicates a detailed classification();
FALSE a coarse_classification().
Defaults to TRUE.
TRUE indicates a signed classification;
FALSE a classification with remove_sign().
Defaults to TRUE.
a vector of labels for the classification hover information.
See class_labels() for inspiration.
textual labels.
Which hover information to display.
Defaults to "text".
When no "text" variable is specified, the function displays a formatted
confidence interval.
The label for the reference point.
Will be used for the points where is.na(sd) or both is.na(lcl) and
is.na(ucl).
The colour for the reference point.
Other plotly add-ons:
add_fan(),
reference_shape(),
reference_text()
# All possible classes
z <- data.frame(
estimate = c(-0.5, 0, 0.5, 1.5, 1, 0.5, 0, -0.5, -1, -1.5),
sd = c(rep(0.8, 3), rep(0.3, 7))
)
z$lcl <- qnorm(0.05, z$estimate, z$sd)
z$ucl <- qnorm(0.95, z$estimate, z$sd)
classification(z$lcl, z$ucl, threshold = 1) -> z$effect
c(
"?" = "unknown\neffect", "?+" = "potential\npositive\neffect",
"?-" = "potential\nnegative\neffect", "~" = "no effect",
"+" = "positive\neffect", "-" = "negative\neffect",
"+~" = "moderate\npositive\neffect", "-~" = "moderate\nnegative\neffect",
"++" = "strong\npositive\neffect", "--" = "strong\nnegative\neffect"
)[as.character(z$effect)] -> z$x
z$x <- factor(z$x, z$x)
z$display <- paste(
"estimate:", format_ci(z$estimate, lcl = z$lcl, ucl = z$ucl)
)
# Simulated trend
set.seed(20190521)
base_year <- 2000
n_year <- 20
trend <- data.frame(
dt = seq_len(n_year),
change = rnorm(n_year, sd = 0.2),
sd = rnorm(n_year, mean = 0.1, sd = 0.01)
)
trend$index <- cumsum(trend$change)
trend$lcl <- qnorm(0.025, trend$index, trend$sd)
trend$ucl <- qnorm(0.975, trend$index, trend$sd)
trend$year <- base_year + trend$dt
trend$display <- paste(
"index:", format_ci(trend$index, lcl = trend$lcl, ucl = trend$ucl)
)
th <- 0.25
ref <- 0
library(plotly)
#> Loading required package: ggplot2
#>
#> Attaching package: ‘plotly’
#> The following object is masked from ‘package:ggplot2’:
#>
#> last_plot
#> The following object is masked from ‘package:stats’:
#>
#> filter
#> The following object is masked from ‘package:graphics’:
#>
#> layout
plot_ly(z, x = ~x, y = ~estimate) |>
add_fan(sd = ~sd, text = ~display) |>
add_classification(lcl = ~lcl, ucl = ~ucl, threshold = 1) |>
layout(
hovermode = "x unified",
shapes = reference_shape(threshold = 1),
annotations = reference_text(threshold = 1)
)
plot_ly(z, x = ~x, y = ~estimate) |>
add_fan(sd = ~sd, step = 0.1, text = ~display) |>
add_classification(
lcl = ~lcl, ucl = ~ucl, threshold = 1, detailed = FALSE
) |>
layout(
shapes = reference_shape(threshold = 1, line = TRUE),
annotations = reference_text(threshold = 1)
)
plot_ly(z, x = ~x, y = ~estimate) |>
add_fan(sd = ~sd, step = 0.2, hoverinfo = "none") |>
add_classification(
lcl = ~lcl, ucl = ~ucl, threshold = 1, signed = FALSE
) |>
layout(shapes = reference_shape(threshold = 1))
plot_ly(z, x = ~x, y = ~estimate) |>
add_fan(sd = ~sd, step = 0.3) |>
add_classification(
lcl = ~lcl, ucl = ~ucl, threshold = 1, detailed = FALSE, signed = FALSE,
text = ~display
) |>
layout(
shapes = reference_shape(threshold = 1, line = TRUE)
)
# trend
plot_ly(data = trend, x = ~year, y = ~index) |>
add_fan(sd = ~sd, text = ~display, hoverinfo = "text") |>
add_classification(sd = ~sd, threshold = th) |>
layout(
hovermode = "x unified", hoverdistance = 1,
shapes = reference_shape(threshold = th, reference = ref),
annotations = reference_text(threshold = th, reference = ref)
)