## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 5
)

## ----setup--------------------------------------------------------------------
library(controlcharts)

## ----data---------------------------------------------------------------------
set.seed(42)

# SPC Data (Time Series)
spc_data <- data.frame(
  date = seq(as.Date("2023-01-01"), by = "month", length.out = 12),
  value = c(10, 12, 11, 15, 12, 11, 25, 12, 11, 10, 11, 12),
  group = "A"
)
spc_data$label_text <- paste0("Val: ", spc_data$value)

# Funnel Data (Categorical)
funnel_data <- data.frame(
  id = LETTERS[1:10],
  num = sample(10:50, 10),
  denom = sample(50:100, 10)
)

## ----title--------------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  title = list(
    text = "Monthly Performance",
    font_size = "20px",
    font_family = "Courier New",
    font_weight = "bold"
  )
)$static_plot

## ----canvas_spc---------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  canvas_settings = list(
    upper_padding = 50,
    lower_padding = 50
  )
)$static_plot

## ----canvas_funnel------------------------------------------------------------
funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  canvas_settings = list(
    left_padding = 50,
    right_padding = 50
  )
)$static_plot

## ----xaxis_spc----------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  x_axis_settings = list(
    xlimit_tick_rotation = -45,
    xlimit_label = "Month of Observation"
  )
)$static_plot

## ----xaxis_funnel-------------------------------------------------------------
funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  x_axis_settings = list(
    xlimit_label = "Population Size (Denominator)"
  )
)$static_plot

## ----yaxis--------------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  y_axis_settings = list(
    ylimit_show = TRUE, # Ensure axis is shown
    limit_multiplier = 2 # Expand the auto-calculated limits
  )
)$static_plot

## ----dates--------------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  date_settings = list(
    date_format_day = "DD",
    date_format_month = "Mon", # Abbreviated month
    date_format_year = "YY",
    date_format_delim = "-"
  )
)$static_plot

## ----lines_spc----------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  line_settings = list(
    colour_main = "purple",
    width_main = 3,
    type_main = "2 5" # Dashed line pattern
  )
)$static_plot

## ----lines_funnel-------------------------------------------------------------
funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  line_settings = list(
    colour_95 = "orange",
    width_95 = 2,
    type_95 = "10 0", # Solid
    colour_99 = "red",
    width_99 = 3
  )
)$static_plot

## ----scatter------------------------------------------------------------------
funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  scatter_settings = list(
    shape = "Diamond",
    size = 8,
    colour = "orange",
    opacity = 0.8
  )
)$static_plot

## ----scatter_text-------------------------------------------------------------
funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  scatter_settings = list(
    use_group_text = TRUE,     # Enable text labels on points
    scatter_text_colour = "darkblue",
    scatter_text_size = 14,
    scatter_text_font = "Georgia"
  )
)$static_plot

## ----labels_spc---------------------------------------------------------------
spc(
  spc_data,
  keys = date,
  numerators = value,
  labels = label_text, # Using the custom column created earlier
  label_settings = list(
    show_labels = TRUE,
    label_position = "bottom",
    label_colour = "red",
    label_font = "Verdana",
    label_size = 10
  )
)$static_plot

## ----labels_funnel------------------------------------------------------------
funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  labels = id, # Show ID as label
  label_settings = list(
    show_labels = TRUE,
    label_colour = "blue",
    label_font = "Arial",
    label_size = 12
  )
)$static_plot

## ----conditional_scatter_spc--------------------------------------------------
# Create a color vector matching the data logic
point_colors <- ifelse(spc_data$value > 15, "red", "#E69F00")

spc(
  spc_data,
  keys = date,
  numerators = value,
  scatter_settings = list(
    colour = point_colors,
    size = 5
  )
)$static_plot

## ----conditional_scatter_funnel-----------------------------------------------
# Logic: Highlight large denominators
funnel_cols <- ifelse(funnel_data$denom > 80, "green", "gray")

funnel(
  funnel_data,
  keys = id,
  numerators = num,
  denominators = denom,
  scatter_settings = list(
    colour = funnel_cols,
    size = 6,
    opacity = 1
  )
)$static_plot

## ----conditional_lines--------------------------------------------------------
# Define colors for line segments
# Note: The vector length corresponds to the points; segments connect points.
line_colors <- rep("gray", nrow(spc_data))
line_colors[5:8] <- "orange" # Highlight a middle section

spc(
  spc_data,
  keys = date,
  numerators = value,
  line_settings = list(
    colour_main = line_colors,
    width_main = 3
  )
)$static_plot

