1 changed files with 148 additions and 0 deletions
@ -0,0 +1,148 @@ |
|||
# A dashboard + demo for segmentation for Jajo Caribbean |
|||
|
|||
# Load Libraries shiny, shinydashboard, highcharter, dplyr, tidyr, shinycssloaders,DT |
|||
library(shiny) |
|||
library(shinydashboard) |
|||
library(highcharter) |
|||
library(dplyr) |
|||
library(tidyr) |
|||
library(shinycssloaders) |
|||
library(DT) |
|||
|
|||
setwd(dirname(getwd())) |
|||
#source helper |
|||
source("helper.R") |
|||
#source mod_revenueplot |
|||
source("mod_revenueplot.R") |
|||
#source dataimporter |
|||
source("dataimporter.R") |
|||
# source mod_datatable.R |
|||
source("mod_datatable.R") |
|||
|
|||
source("mod_scatter.R") |
|||
source("mod_histo.R") |
|||
|
|||
|
|||
# Define UI for application that draws a histogram |
|||
ui <- dashboardPage( |
|||
#Dashboard Title 'Segmentation' |
|||
dashboardHeader(title = "Segmentation"), |
|||
#add menu items |
|||
dashboardSidebar( |
|||
# sidebarMenu( |
|||
# menuItem("revenue", tabName = "Revenue", icon = icon("dollar")), |
|||
# menuItem("segments", tabName = "Segments", icon = icon("users")) |
|||
# ) |
|||
), |
|||
dashboardBody( |
|||
# tabItems( |
|||
# # First tab content |
|||
# tabItem(tabName = "Revenue", |
|||
# revplotUI("revplot"), |
|||
# datatableUI("datatable") |
|||
# ), |
|||
# # Second tab content |
|||
# tabItem(tabName = "Segments", |
|||
# h2("Segmentation"), |
|||
# |
|||
# h4("Traditional Approach - Location"), |
|||
# |
|||
# scatterUI("geosegment"), |
|||
# |
|||
# h4("Traditional Approach - Role"), |
|||
# |
|||
# scatterUI("rolesegment"), |
|||
# |
|||
# h4("Machine Learning Approach"), |
|||
# |
|||
# scatterUI("rolesegment") |
|||
# ) |
|||
# ) |
|||
revplotUI("revplot"), |
|||
datatableUI("datatable"), |
|||
h2("Segmentation"), |
|||
|
|||
fluidRow( |
|||
column(6, |
|||
h5("Segment visualization"), |
|||
scatterUI("clustersegment") |
|||
), |
|||
column(6, |
|||
h5("Revenue by segment"), |
|||
highchartOutput("revenuebysegment") |
|||
) |
|||
), |
|||
|
|||
h2("Revenue Distribution"), |
|||
fluidRow( |
|||
#histoUI inside box |
|||
box( |
|||
title = "Segment 1", |
|||
status = "primary", |
|||
solidHeader = TRUE, |
|||
collapsible = F, |
|||
width = 6, |
|||
histoUI("segment1") |
|||
), |
|||
box( |
|||
title = "Segment 2", |
|||
status = "primary", |
|||
solidHeader = TRUE, |
|||
collapsible = F, |
|||
width = 6, |
|||
histoUI("segment2") |
|||
) |
|||
), |
|||
fluidRow( |
|||
#histoUI inside box |
|||
box( |
|||
title = "Segment 3", |
|||
status = "primary", |
|||
solidHeader = TRUE, |
|||
collapsible = F, |
|||
width = 6, |
|||
histoUI("segment3") |
|||
), |
|||
box( |
|||
title = "Segment 4", |
|||
status = "primary", |
|||
solidHeader = TRUE, |
|||
collapsible = TRUE, |
|||
width = 6, |
|||
histoUI("segment4") |
|||
) |
|||
) |
|||
|
|||
|
|||
) |
|||
) |
|||
|
|||
# Define server logic required to draw a histogram |
|||
server <- function(input, output) { |
|||
|
|||
revplotServer("revplot", df = dat, xtitle = "Year", ytitle = "Revenue") |
|||
datatableServer("datatable", dat[,-10]) |
|||
scatterServer("clustersegment", dat) |
|||
histoServer("segment1", dat, segment=1) |
|||
histoServer("segment2", dat, segment=2) |
|||
histoServer("segment3", dat, segment=3) |
|||
histoServer("segment4", dat, segment=4) |
|||
|
|||
output$revenuebysegment <- renderHighchart({ |
|||
dat |> |
|||
group_by(Cluster) |> |
|||
summarise( |
|||
self=sum(Self.Purchase1)+sum(Self.Purchase2)+sum(Self.Purchase3), |
|||
other=sum(Other.Purchase1)+sum(Other.Purchase2)+sum(Other.Purchase3) |
|||
) |> |
|||
pivot_longer(c(self,other)) |> |
|||
hchart("column", hcaes(x=Cluster, y=value, group=name), stacking="normal") |> |
|||
hc_colors(c("#0073C2FF", "#EFC000FF")) |> |
|||
hc_title(text="Revenue by segment") |> |
|||
hc_xAxis(title=list(text="Segment")) |> |
|||
hc_yAxis(title=list(text="Revenue")) |
|||
}) |
|||
} |
|||
|
|||
# Run the application |
|||
shinyApp(ui = ui, server = server) |
|||
Loading…
Reference in new issue