Skip to content

Fast and easy echarts with data.table backend for wrangling and a simple API

License

Notifications You must be signed in to change notification settings

AdrianAntico/AutoPlots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Version:1.0.0 metacran downloads


A simple api for visualizing Echarts. Plotting functions expose most Echarts customization options. See documentation for details.


Basic Plots

  • Area
  • Bar
  • Box
  • Copula
  • Correlogram
  • Density
  • Donut
  • Heatmaps
  • Histogram
  • Line
  • Parallel
  • Pie
  • Radar
  • River
  • Rosetype
  • Scatter
  • Stacked Bar
  • Step
  • 3D Bar
  • 3D Scatter
  • 3D Copula
  • Word Cloud

Modeling Plots

  • Autocorrelation
  • Calibration
  • Calibration Scatter
  • Confusion Matrix Heatmap
  • Gain
  • Lift
  • Partial Autocorrelation
  • Partial Dependence
  • Partial Dependence Heatmap
  • Probability
  • ROC
  • Shapely Importance
  • Variable Importance

Installation

# Install CRAN dependencies
install.packages(c(
  "combinat", "data.table", "devtools", "dplyr", "e1071", "echarts4r",
  "lubridate", "nortest", "quanteda", "quanteda.textstats", "scales"
))

# Install AutoPlots from GitHub
devtools::install_github("AdrianAntico/AutoPlots", upgrade = FALSE, force = TRUE)

Code Examples

Area

Area Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = mean(Independent_Variable8)
), by = c("DateTime")]

# Build plot
AutoPlots::Area(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar",
  areaStyle.color = c("#80AAFF","#BDD5FF","#CFCFCF"),
  areaStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = mean(Independent_Variable8)
), by = c("DateTime", "Factor_1")]

# Build plot
ch <- as.character(sort(unique(data$Factor_1)))
plot_list <- lapply(ch, function(x) {
  AutoPlots::Area(
    dt = data[Factor_1 == x],
    XVar = "DateTime",
    YVar = "IndepVar",
    Height = "300px",
    title.text = paste0("Factor_1: ", x),
    areaStyle.color = c("#80AAFF","#BDD5FF","#CFCFCF"),
    areaStyle.opacity = c(0.9,0.4,0.05),
    legend.show = FALSE)
})

AutoPlots::display_plots_grid(
  plot_list,
  cols = 2
)


Bar

Bar Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = mean(Independent_Variable8)
), by = c("DateTime")]

# Build plot
AutoPlots::Bar(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar",
  backgroundStyle.color = c("#80AAFF","#BDD5FF","#CFCFCF"),
  backgroundStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = mean(Independent_Variable8)
), by = c("DateTime", "Factor_1")]

# Build plot
ch <- as.character(sort(unique(data$Factor_1)))
plot_list <- lapply(ch, function(x) {
  AutoPlots::Bar(
    dt = data[Factor_1 == x],
    XVar = "DateTime",
    YVar = "IndepVar",
    Height = "300px",
    title.text = paste0("Factor_1: ", x),
    backgroundStyle.color = c("#80AAFF","#BDD5FF","#CFCFCF"),
    backgroundStyle.opacity = c(0.9,0.4,0.05),
    legend.show = FALSE)
})

AutoPlots::display_plots_grid(
  plot_list,
  cols = 2
)



Box

Box Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data[1, Independent_Variable8 := 0.6]
data[2, Independent_Variable8 := 0.7]
data[3, Independent_Variable8 := 0.8]
data[4, Independent_Variable8 := 0.9]

# Build plot
AutoPlots::Box(
  dt = data,
  XVar = "Factor_1",
  YVar = "Independent_Variable8",
  yAxis.title = "IndepVar",
  itemStyle.color = c("red","#BDD5FF","blue"),
  itemStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data[1, Independent_Variable8 := 0.6]
data[2, Independent_Variable8 := 0.7]
data[3, Independent_Variable8 := 0.8]
data[4, Independent_Variable8 := 0.9]

# Build plot
ch <- c("Factor_1", "Factor_2")
plot_list <- lapply(ch, function(x) {
  AutoPlots::Box(
    dt = data,
    XVar = x,
    YVar = "Independent_Variable8",
    Height = "300px",
    title.text = paste0("Factor_1: ", x),
    itemStyle.color = c("red","#BDD5FF","blue"),
    itemStyle.opacity = c(0.9,0.4,0.05),
    legend.show = FALSE)
})

AutoPlots::display_plots_grid(
  plot_list,
  cols = 1
)



Copula

Copula Plot Examples
# Create correlated data
n   <- 1000        # rows
p   <- 4           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10)     # means (length p)
sds <- c(10, 5, 3, 1)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))

# Build plot
p1 <- AutoPlots::Copula(
  dt = dt,
  XVar = "x1",
  YVar = "x2",
  legend.show = FALSE
)



# Create correlated data
n   <- 1000        # rows
p   <- 4           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10)     # means (length p)
sds <- c(10, 5, 3, 1)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))

# Build plot
p1 <- AutoPlots::Copula(
  dt = dt,
  XVar = "x1",
  YVar = "x2",
  title.text = "x1 vs. x2",
  legend.show = FALSE
)

# Build plot
p2 <- AutoPlots::Copula(
  dt = dt,
  XVar = "x1",
  YVar = "x3",
  title.text = "x1 vs. x3",
  legend.show = FALSE
)

# Build plot
p3 <- AutoPlots::Copula(
  dt = dt,
  XVar = "x2",
  YVar = "x3",
  title.text = "x2 vs. x3",
  legend.show = FALSE
)

# Build plot
p4 <- AutoPlots::Copula(
  dt = dt,
  XVar = "x3",
  YVar = "x4",
  title.text = "x3 vs. x4",
  legend.show = FALSE
)

AutoPlots::display_plots_grid(
  list(p1,p2,p3,p4),
  cols = 2
)



Correlogram

Correlogram Examples
n   <- 1000        # rows
p   <- 4           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10)     # means (length p)
sds <- c(10, 5, 3, 1)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))

# Build Plot
AutoPlots::CorrMatrix(
  dt = dt,
  PreAgg = FALSE,
  Method = "Spearman",
  CorrVars = c("x1","x2","x3","x4"),
  ShowLabels = TRUE,
  visualMap.InRange.color = c("white", "gray", "darkblue")
)



n   <- 1000        # rows
p   <- 4           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10)     # means (length p)
sds <- c(10, 5, 3, 1)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))

# Build Plot
p1 <- AutoPlots::CorrMatrix(
  dt = dt,
  PreAgg = FALSE,
  Method = "Spearman",
  CorrVars = c("x1","x2","x3","x4"),
  ShowLabels = TRUE,
  visualMap.InRange.color = c("white", "gray", "darkblue"),
  title.text = "Spearman Correlation"
)

p2 <- AutoPlots::CorrMatrix(
  dt = dt,
  PreAgg = FALSE,
  Method = "Pearson",
  CorrVars = c("x1","x2","x3","x4"),
  ShowLabels = TRUE,
  visualMap.InRange.color = c("white", "gray", "darkgreen"),
  title.text = "Pearson Correlation"
)

p3 <- AutoPlots::CorrMatrix(
  dt = dt,
  PreAgg = FALSE,
  Method = "Kendall",
  CorrVars = c("x1","x2","x3","x4"),
  ShowLabels = TRUE,
  visualMap.InRange.color = c("white", "gray", "darkred"),
  title.text = "Kendall's Tau Correlation"
)

AutoPlots::display_plots_grid(
  list(p1,p2,p3),
  cols = 2
)



Density

Density Plot Examples
# Create fake data
data <- data.table::data.table(IndepVar = rnorm(1000, mean = 0, sd = 1))

# Build plot
AutoPlots::Density(
  dt = data,
  XVar = "IndepVar",
  areaStyle.color = c("#697AFF","#A1ADFF","#D9DEFF"),
  areaStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE
)



# Create fake data
data <- data.table::data.table(IndepVar = rnorm(1000, mean = 5, sd = 2))
data[, IndepVar2 := rnorm(1000, mean = 10, sd = 5)]
data[, IndepVar3 := rnorm(1000, mean = 10, sd = 15)]
data[, IndepVar4 := rnorm(1000, mean = 10, sd = 20)]

# Build Plots
p1 <- AutoPlots::Density(
  dt = data,
  XVar = "IndepVar",
  title.text = "IndepVar",
  areaStyle.color = c("#697AFF","#A1ADFF","#D9DEFF"),
  areaStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE
)

p2 <- AutoPlots::Density(
  dt = data,
  XVar = "IndepVar2",
  title.text = "IndepVar2",
  areaStyle.color = c("#697AFF","#A1ADFF","#D9DEFF"),
  areaStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE
)

p3 <- AutoPlots::Density(
  dt = data,
  XVar = "IndepVar3",
  title.text = "IndepVar3",
  areaStyle.color = c("#697AFF","#A1ADFF","#D9DEFF"),
  areaStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE
)

p4 <- AutoPlots::Density(
  dt = data,
  XVar = "IndepVar4",
  title.text = "IndepVar4",
  areaStyle.color = c("#697AFF","#A1ADFF","#D9DEFF"),
  areaStyle.opacity = c(0.9,0.4,0.05),
  legend.show = FALSE
)

AutoPlots::display_plots_grid(
  list(p1,p2,p3,p4),
  cols = 2
)



Donut

Donut Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1")]

# Build Plot
AutoPlots::Donut(
  dt = data,
  XVar = "Factor_1",
  YVar = "IndepVar"
)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
dt1 <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1")]
dt2 <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_2")]

# Build Plots
p1 <- AutoPlots::Donut(
  dt = dt1,
  XVar = "Factor_1",
  YVar = "IndepVar",
  title.text = "Factor_1"
)

p2 <- AutoPlots::Donut(
  dt = dt2,
  XVar = "Factor_2",
  YVar = "IndepVar",
  title.text = "Factor_2"
)

AutoPlots::display_plots_grid(
  list(p1, p2),
  cols = 1
)



Heatmap

Heatmap Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 100000, Correlation = 0.1)
data <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1", "Factor_2")]

# Build Plots
AutoPlots::HeatMap(
  dt = data,
  XVar = "Factor_1",
  YVar = "Factor_2",
  ZVar = "IndepVar",
  title.text = "V1",
  label.show = TRUE,
  label.fontWeight = "bolder",
  emphasis.shadowColor = "white",
  emphasis.shadowBlur = 10, 
  visualMap.InRange.color = c("blue", "white", "red")
)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 100000, Correlation = 0.1)
data <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1", "Factor_2")]

# Build Plots
p1 <- AutoPlots::HeatMap(
  dt = data,
  XVar = "Factor_1",
  YVar = "Factor_2",
  ZVar = "IndepVar",
  title.text = "V1",
  label.show = TRUE,
  label.fontWeight = "bolder",
  emphasis.shadowColor = "white",
  emphasis.shadowBlur = 10, 
  visualMap.InRange.color = c("blue", "white", "red")
)

# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 100000, Correlation = 0.1)
data <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1", "Factor_2")]

# Build Plots
p2 <- AutoPlots::HeatMap(
  dt = data,
  XVar = "Factor_1",
  YVar = "Factor_2",
  ZVar = "IndepVar",
  title.text = "V2",
  label.show = TRUE,
  label.fontWeight = "bolder",
  emphasis.shadowColor = "white",
  emphasis.shadowBlur = 10, 
  visualMap.InRange.color = c("green", "white", "orange")
)

AutoPlots::display_plots_grid(
  list(p1, p2),
  cols = 1
)



Histogram

Histogram Examples
# Create fake data
data <- data.table::data.table(Variable = rnorm(n = 1000, mean = 5, sd = 2))

# Build Plots
AutoPlots::Histogram(
  dt = data,
  XVar = "Variable",
  backgroundStyle.color = c("lightblue","darkblue","blue","blue"),
  backgroundStyle.opacity = c(0.9,0.7,0.6,0.05),
  legend.show = FALSE
)



# Create fake data
data <- data.table::data.table(Variable = rnorm(n = 1000, mean = 5, sd = 2))
data[, Variable2 := rnorm(n = 1000, mean = 5, sd = 5)]
data[, Variable3 := rnorm(n = 1000, mean = 5, sd = 10)]
data[, Variable4 := rnorm(n = 1000, mean = 5, sd = 20)]

# Build Plots
p1 <- AutoPlots::Histogram(
  dt = data,
  XVar = "Variable",
  title.text = "Var",
  backgroundStyle.color = c("lightblue","darkblue","blue","blue"),
  backgroundStyle.opacity = c(0.9,0.7,0.6,0.05),
  legend.show = FALSE
)

p2 <- AutoPlots::Histogram(
  dt = data,
  XVar = "Variable2",
  title.text = "Var2",
  backgroundStyle.color = c("lightblue","darkblue","blue","blue"),
  backgroundStyle.opacity = c(0.9,0.7,0.6,0.05),
  legend.show = FALSE
)

p3 <- AutoPlots::Histogram(
  dt = data,
  XVar = "Variable3",
  title.text = "Var3",
  backgroundStyle.color = c("lightblue","darkblue","blue","blue"),
  backgroundStyle.opacity = c(0.9,0.7,0.6,0.05),
  legend.show = FALSE
)

p4 <- AutoPlots::Histogram(
  dt = data,
  XVar = "Variable4",
  title.text = "Var4",
  backgroundStyle.color = c("lightblue","darkblue","blue","blue"),
  backgroundStyle.opacity = c(0.9,0.7,0.6,0.05),
  legend.show = FALSE
)
  
AutoPlots::display_plots_grid(
  list(p1,p2,p3,p4),
  cols = 2
)



Line

Line Plot Examples
# Create data
data <- AutoPlots::FakeDataGenerator(N = 1000, AddDate = T)
data <- data[, .(
  IndepVar = mean(Independent_Variable8)
), by = c("DateTime")]

# Build plot
AutoPlots::Line(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar",
  title.text = "IndepVar",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)



# Create data
data <- AutoPlots::FakeDataGenerator(N = 1000, AddDate = T)
data <- data[, .(
  IndepVar = mean(Independent_Variable8),
  IndepVar2 = mean(Independent_Variable7),
  IndepVar3 = mean(Independent_Variable6),
  IndepVar4 = mean(Independent_Variable5)
), by = c("DateTime")]

# Build plot
p1 <- AutoPlots::Line(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar",
  title.text = "IndepVar",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

p2 <- AutoPlots::Line(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar2",
  title.text = "IndepVar2",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

p3 <- AutoPlots::Line(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar3",
  title.text = "IndepVar3",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

p4 <- AutoPlots::Line(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar4",
  title.text = "IndepVar4",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

AutoPlots::display_plots_grid(
  list(p1,p2,p3,p4),
  cols = 2
)



Parallel

Parallel Plot Examples
# Create data
n   <- 1000        # rows
p   <- 8           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10,1,2,3,4)     # means (length p)
sds <- c(10, 5, 3, 1, 1,2,3,4)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))
data.table::setnames(dt, "x1", "bl bl bl")

# Build Plot
AutoPlots::Parallel(
  dt = dt,
  CorrVars = names(dt),
  ShowLabels = T,
  lineStyle.color = "#00C7FF",
  lineStyle.width = 0.2
)



# Create data
data <- AutoPlots::FakeDataGenerator(N = 1000, ID = 0)
data.table::setnames(
  data,
  paste0("Independent_Variable", 1:8),
  paste0("x", 1:8)
)

# Build Plots
group_vars <- sort(as.character(unique(data$Factor_1)))[1:4]
plot_list <- lapply(group_vars, function(x) {
  AutoPlots::Parallel(
    dt = data[Factor_1 == x],
    CorrVars = paste0("x", 1:8),
    ShowLabels = T,
    lineStyle.color = "#00C7FF",
    lineStyle.width = 0.2,
    title.text = x
  )
})

AutoPlots::display_plots_grid(
  plot_list,
  cols = 2
)



Pie

Pie Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1")]

# Build Plot
AutoPlots::Pie(
  dt = data,
  XVar = "Factor_1",
  YVar = "IndepVar",
  ShowLabels = T)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
dt1 <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1")]
dt2 <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_2")]

# Build Plots
p1 <- AutoPlots::Pie(
  dt = dt1,
  XVar = "Factor_1",
  YVar = "IndepVar",
  title.text = "Factor_1",
  ShowLabels = T)

p2 <- AutoPlots::Pie(
  dt = dt2,
  XVar = "Factor_2",
  YVar = "IndepVar",
  title.text = "Factor_2",
  ShowLabels = T)

AutoPlots::display_plots_grid(
  list(p1, p2),
  cols = 1
)



Radar

Radar Plot Examples
# Create Data
dt <- data.table::data.table(
  Y1 = pnorm(q = runif(10)),
  Y2 = pnorm(q = runif(10)),
  Y3 = pnorm(q = runif(10)),
  GV = sample(LETTERS[1:10], 10, TRUE))

# Create plot
AutoPlots::Radar(
  dt = dt,
  AggMethod = "mean",
  ShowLabels = TRUE,
  PreAgg = FALSE,
  YVar = c("Y1","Y2","Y3"),
  GroupVar = "GV",
  lineStyle.color = c("#00BFFF", "#FF69B4", "#32CD32"))



# Create Data
dt <- data.table::data.table(
  Y1 = pnorm(q = runif(10)),
  Y2 = pnorm(q = runif(10)),
  Y3 = pnorm(q = runif(10)),
  GV = sample(LETTERS[1:10], 10, TRUE))

dt2 <- data.table::data.table(
  Y1 = pnorm(q = runif(10)),
  Y2 = pnorm(q = runif(10)),
  Y3 = pnorm(q = runif(10)),
  GV = sample(LETTERS[11:20], 10, TRUE))

# Create plot
p1 <- AutoPlots::Radar(
  dt = dt,
  AggMethod = "mean",
  ShowLabels = TRUE,
  PreAgg = FALSE,
  YVar = c("Y1","Y2","Y3"),
  GroupVar = "GV",
  title.text = "Data 1",
  lineStyle.color = c("#00BFFF", "#FF69B4", "#32CD32"))

p2 <- AutoPlots::Radar(
  dt = dt2,
  AggMethod = "mean",
  ShowLabels = TRUE,
  PreAgg = FALSE,
  YVar = c("Y1","Y2","Y3"),
  GroupVar = "GV",
  title.text = "Data 2",
  lineStyle.color = c("#00BFFF", "#FF69B4", "#32CD32"))

AutoPlots::display_plots_grid(
  list(p1,p2),
  cols = 1
)



River

River Plot Examples
# Create fake data
dates <- seq.Date(Sys.Date() - 30, Sys.Date(), by = "day")
grps <- lapply(LETTERS[1:5], rep, 31) |> unlist()
dt <- data.table::data.table(
  dates = rep(dates, 5),
  groups = grps,
  values = runif(length(grps), 1, 50)
)

# Build Plot
AutoPlots::River(
  dt = dt,
  PreAgg = TRUE,
  XVar = "dates",
  YVar = "values",
  GroupVar = "groups",
  legend.orient = "horizontal",
  itemStyle.color = c("#FF4C4C", "#00BFFF", "#FFD700", "#32CD32", "#FF69B4")
  )



# Create fake data
dates <- seq.Date(Sys.Date() - 30, Sys.Date(), by = "day")
grps <- lapply(LETTERS[1:5], rep, 31) |> unlist()
dt1 <- data.table::data.table(
  dates = rep(dates, 5),
  groups = grps,
  values = runif(length(grps), 1, 50)
)

dates <- seq.Date(Sys.Date() - 30, Sys.Date(), by = "day")
grps <- lapply(LETTERS[6:10], rep, 31) |> unlist()
dt2 <- data.table::data.table(
  dates = rep(dates, 5),
  groups = grps,
  values = runif(length(grps), 1, 50)
)
+-
# Build Plot
p1 <- AutoPlots::River(
  dt = dt1,
  PreAgg = TRUE,
  XVar = "dates",
  YVar = "values",
  GroupVar = "groups",
  title.text = "Data 1",
  legend.orient = "horizontal",
  itemStyle.color = c("#FF4C4C", "#00BFFF", "#FFD700", "#32CD32", "#FF69B4")
  )

p2 <- AutoPlots::River(
  dt = dt2,
  PreAgg = TRUE,
  XVar = "dates",
  YVar = "values",
  GroupVar = "groups"
  title.text = "Data 2",
  legend.orient = "horizontal",
  itemStyle.color = c("#00FFFF", "#FF7F50", "#8A2BE2", "#00FF7F", "#FF4500"))

AutoPlots::display_plots_grid(
  list(p1, p2),
  cols = 1
)



Rosetype

Rosetype Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
data <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1")]

# Build Plot
AutoPlots::Rosetype(
  dt = data,
  XVar = "Factor_1",
  YVar = "IndepVar"
)



# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 1000)
dt1 <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_1")]
dt2 <- data[, .(
  IndepVar = round(mean(Independent_Variable8), 3)
), by = c("Factor_2")]

# Build Plots
p1 <- AutoPlots::Rosetype(
  dt = dt1,
  XVar = "Factor_1",
  YVar = "IndepVar",
  title.text = "Factor_1"
)

p2 <- AutoPlots::Rosetype(
  dt = dt2,
  XVar = "Factor_2",
  YVar = "IndepVar",
  title.text = "Factor_2"
)

AutoPlots::display_plots_grid(
  list(p1, p2),
  cols = 1
)



Scatter

Scatter Plot Examples
# Create data
n   <- 1000        # rows
p   <- 4           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10)     # means (length p)
sds <- c(10, 5, 3, 1)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))

# Build Plot
AutoPlots::Scatter(
  dt = dt,
  XVar = "x2",
  YVar = "x1",
  legend.show = FALSE
)



# Create data
n   <- 1000        # rows
p   <- 4           # number of variables
rho <- 0.8         # correlation between neighbors (AR(1))
mu  <- c(50, 100, 0, 10)     # means (length p)
sds <- c(10, 5, 3, 1)        # standard deviations (length p)
Sigma_cor <- outer(1:p, 1:p, \(i, j) rho^abs(i - j))   # AR(1) correlation matrix
L <- chol(Sigma_cor)                                   # Cholesky factor (upper-tri)
Z <- matrix(rnorm(n * p), nrow = n, ncol = p)          # iid N(0,1)
X_cor <- Z %*% L                                       # correlated, unit variance
X <- X_cor %*% diag(sds)                               # set std devs
X <- sweep(X, 2, mu, `+`)                              # set means
dt <- data.table::as.data.table(X)
data.table::setnames(dt, paste0("x", seq_len(p)))

# Build Plots
p1 <- AutoPlots::Scatter(
  dt = dt,
  XVar = "x2",
  YVar = "x1",
  legend.show = FALSE,
  title.text = "x1 vs x2"
)

p2 <- AutoPlots::Scatter(
  dt = dt,
  XVar = "x3",
  YVar = "x1",
  legend.show = FALSE,
  title.text = "x1 vs x3"
)

p3 <- AutoPlots::Scatter(
  dt = dt,
  XVar = "x3",
  YVar = "x2",
  legend.show = FALSE,
  title.text = "x2 vs x3"
)

p4 <- AutoPlots::Scatter(
  dt = dt,
  XVar = "x4",
  YVar = "x3",
  legend.show = FALSE,
  title.text = "x3 vs x4"
)

AutoPlots::display_plots_grid(
  list(p1,p2,p3,p4),
  cols = 2
)



Stacked Bar

Stacked Bar Plot Examples
# Create fake data
data <- AutoPlots::FakeDataGenerator(N = 100000)
data <- data[, .(
  IndepVar = sum(Independent_Variable1)
), by = c("Factor_1","Factor_2")]


# Echarts Stacked Bar Chart
AutoPlots::StackedBar(
  dt = data,
  XVar = "Factor_1",
  YVar = "IndepVar",
  GroupVar = "Factor_2",
  legend.right = 35,
  legend.top = 45,
  yAxis.nameTextStyle.padding = 40
)



Step

Step Plot Examples
# Create data
data <- AutoPlots::FakeDataGenerator(N = 1000, AddDate = T)
data <- data[, .(
  IndepVar = mean(Independent_Variable8)
), by = c("DateTime")]

# Build plot
AutoPlots::Step(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar",
  title.text = "IndepVar",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)



# Create data
data <- AutoPlots::FakeDataGenerator(N = 1000, AddDate = T)
data <- data[, .(
  IndepVar = mean(Independent_Variable8),
  IndepVar2 = mean(Independent_Variable7),
  IndepVar3 = mean(Independent_Variable6),
  IndepVar4 = mean(Independent_Variable5)
), by = c("DateTime")]

# Build plot
p1 <- AutoPlots::Step(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar",
  title.text = "IndepVar",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

p2 <- AutoPlots::Step(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar2",
  title.text = "IndepVar2",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

p3 <- AutoPlots::Step(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar3",
  title.text = "IndepVar3",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

p4 <- AutoPlots::Step(
  dt = data,
  XVar = "DateTime",
  YVar = "IndepVar4",
  title.text = "IndepVar4",
  lineStyle.color = c("red","#3848FF","blue"),
  legend.show = FALSE
)

AutoPlots::display_plots_grid(
  list(p1,p2,p3,p4),
  cols = 2
)



About

Fast and easy echarts with data.table backend for wrangling and a simple API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages