sp_add_segments {SveltePlots} | R Documentation |
Add Segments or Rectangles to a SveltePlot Chart
Description
Adds segments or rectangles to highlight specific areas or differences within a SveltePlot chart. This function can be used to draw attention to certain data points, ranges, or to compare groups.
Usage
sp_add_segments(
sp,
x_start,
x_end,
y_start = "even",
y_end = "even",
type = "lines",
linetype = "solid",
line_width = 1,
opacity = 0.2,
show_legend = TRUE,
background_color = NULL,
legend_text = " ",
tooltip = "",
font_size = 12,
text_color = "black",
x_position = NULL,
y_position = NULL,
outline_width = 1,
outline_color = "black",
key = NULL
)
Arguments
sp |
A SveltePlot htmlwidget object to which segments or rectangles will be added. |
x_start |
Vector of starting x positions for segments or rectangles. If the x-axis is numeric, this should be a numeric vector; if the x-axis is date or time, this should be a character vector representing dates. |
x_end |
Vector of ending x positions for segments or rectangles, similar in type to |
y_start |
Vector of starting y positions for segments or rectangles. Can be numeric or "auto" to span the entire y-axis range. |
y_end |
Vector of ending y positions for segments or rectangles, similar in type to |
type |
Character vector specifying the type of annotation to add: "lines" for line segments or "rect" for rectangles. Default is "lines". |
linetype |
Character vector specifying the appearance of the line if type is "lines". Supported values include "blank", "solid", "dashed", "dotted", "dotdash", "longdash", and "twodash". Custom linetypes can also be defined as strings. |
line_width |
Numeric vector specifying the width of lines if type is "lines". Default is 1. |
opacity |
Numeric vector between 0 and 1 specifying the opacity of the lines or rectangles. Default is 0.5. |
show_legend |
Logical indicating whether to include these segments or rectangles in the chart's legend. Default is TRUE. |
background_color |
Character vector specifying the color(s) for the lines or rectangles. If NULL, a default color scheme is used. |
legend_text |
Character vector specifying custom text for legend entries. Default is NULL, and no legend will be shown. |
tooltip |
Character vector specifying tooltip text to be displayed on hover. Each segment or rectangle can have its own tooltip text. |
font_size |
Numeric vector specifying the font size of the tooltip text. Default is 12. |
text_color |
Character vector specifying the color of the tooltip text. Default is "black". |
x_position |
Vector of x positions for the tooltips. If NULL, defaults to |
y_position |
Vector of y positions for the tooltips. Default is NULL. |
outline_width |
Numeric vector specifying the width of the outline of the rectangles. Default is 1. |
outline_color |
Character vector specifying the color of the outline of the rectangles. Default is "black". |
key |
Character vector specifying keys for the segments or rectangles. Default assigns the keys from 1 to the number of rows in the data set. For more information see Each keyed block |
Value
An object of class htmlwidget
representing the plot with segments added.
Examples
library(SveltePlots)
data("segments")
data("dau")
data("purchases")
sp(
data = purchases, type = "line",
mapping = spaes(x = date, y = revenue_roll, group = age),
colors = c("red", "green", "blue"),
combine_same_groups = TRUE,
height = 500
) |>
sp_add_series(
data = purchases,
mapping = spaes(x = date, y = revenue, group = age),
type = "points",
alpha = 0.4,
tooltip = FALSE,
include_legend = FALSE
) |>
sp_add_series(
data = purchases[purchases$revenue == max(purchases$revenue), ],
mapping = spaes(x = date, y = revenue, group = age),
type = "points",
size = 5,
tooltip = FALSE
) |>
sp_add_segments(
x_start = "2000-01-12", x_end = "2000-01-17",
y_start = "auto", y_end = "auto",
type = "rect",
opacity = 0.2,
background_color = "black",
text_color = "white",
show_legend = TRUE,
legend_text = "Highest Revenue Day",
tooltip = "Revenue: <strong>$13179</strong>"
) |>
sp_add_arrows(
x_start = c("2000-03-01", "2000-03-01"), x_end = c("2000-01-15", "2000-01-15"),
y_start = c(8000, 12000), y_end = c(10000, 13000),
arrow_head = c(0, 0),
size = c(200, 200),
curvature = c(0.2, 0.4),
direction = c("downward", "downward"),
color = c("black", "black"),
arrow_head_type = c("triangle", "triangle")
) |>
sp_add_text(
x = c("2000-02-01", "2000-02-20"),
y = c(12500, 8500),
text = c(
"This was the highest revenue day",
"Window of Some Event Happening"
)
)
sp <- sp(
data = dau,
type = "line",
spaes(x = date, y = DAU),
tooltip = FALSE
) |>
sp_add_series(
data = dau,
mapping = spaes(x = date, y = DAU),
type = "points",
size = 4,
tooltip = TRUE,
) |>
sp_add_segments(
x_start = segments$start_date,
x_end = segments$end_date,
y_start = "even",
y_end = "even",
type = "rect",
opacity = 0.2,
background_color = segments$colors,
text_color = "white",
show_legend = TRUE,
legend_text = segments$event_type,
tooltip = unlist(segments$extra_details),
key = segments$key
) |>
sp_title("DAU", font_size = 24) |>
sp_x_axis(rotation_axis_ticks = -30)
sp