example real time shiny
This commit is contained in:
parent
c85ffb6daa
commit
b97073f540
|
@ -0,0 +1,96 @@
|
||||||
|
|
||||||
|
library(apexcharter)
|
||||||
|
library(shiny)
|
||||||
|
|
||||||
|
ui <- fluidPage(
|
||||||
|
tags$h2("Real time charts with {apexcharter}"),
|
||||||
|
tags$hr(),
|
||||||
|
fluidRow(
|
||||||
|
column(
|
||||||
|
width = 4,
|
||||||
|
# verbatimTextOutput("res"),
|
||||||
|
apexchartOutput(outputId = "gauge")
|
||||||
|
),
|
||||||
|
column(
|
||||||
|
width = 4,
|
||||||
|
apexchartOutput(outputId = "bar")
|
||||||
|
),
|
||||||
|
column(
|
||||||
|
width = 4,
|
||||||
|
apexchartOutput(outputId = "line")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
server <- function(input, output, session) {
|
||||||
|
|
||||||
|
rv <- reactiveValues(x = data.frame(
|
||||||
|
time = sort(Sys.Date() - 1:20),
|
||||||
|
value = round(rnorm(20, mean = 10)),
|
||||||
|
groups = sample(LETTERS, 20, TRUE),
|
||||||
|
hits = round(runif(20, 1, 100)),
|
||||||
|
stringsAsFactors = FALSE
|
||||||
|
))
|
||||||
|
|
||||||
|
r <- reactive({
|
||||||
|
invalidateLater(1000)
|
||||||
|
rv$x <- rbind(
|
||||||
|
isolate(rv$x),
|
||||||
|
data.frame(
|
||||||
|
time = isolate(tail(rv$x$time, 1) + 1),
|
||||||
|
value = round(rnorm(1, mean = 10)),
|
||||||
|
groups = sample(LETTERS, 1, TRUE),
|
||||||
|
hits = round(runif(1, 1, 100))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
output$res <- renderPrint({
|
||||||
|
tail(r(), 20)
|
||||||
|
})
|
||||||
|
|
||||||
|
output$line <- renderApexchart({
|
||||||
|
apex(data = tail(r(), 20), mapping = aes(x = time, y = value), type = "spline") %>%
|
||||||
|
ax_chart(animations = list(
|
||||||
|
enabled = TRUE, easing = "linear", dynamicAnimation = list(enabled = FALSE)
|
||||||
|
)) %>%
|
||||||
|
ax_xaxis(range = 777600000)
|
||||||
|
})
|
||||||
|
|
||||||
|
output$bar <- renderApexchart({
|
||||||
|
apex(
|
||||||
|
data = table(groups = r()$groups),
|
||||||
|
mapping = aes(x = groups, y = Freq),
|
||||||
|
type = "column"
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
output$gauge <- renderApexchart({
|
||||||
|
apex(
|
||||||
|
data = NULL,
|
||||||
|
type = "radialBar",
|
||||||
|
mapping = aes(x = "Last value", y = tail(r()$hits, 1))
|
||||||
|
) %>%
|
||||||
|
ax_plotOptions(
|
||||||
|
radialBar = radialBar_opts(
|
||||||
|
startAngle = -135,
|
||||||
|
endAngle = 135,
|
||||||
|
dataLabels = list(
|
||||||
|
name = list(
|
||||||
|
fontSize = "16px",
|
||||||
|
offsetY = 120
|
||||||
|
),
|
||||||
|
value = list(
|
||||||
|
offsetY = 76,
|
||||||
|
fontSize = "22px",
|
||||||
|
formatter = JS("function (val) {return val + ' hits';}")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) %>%
|
||||||
|
ax_stroke(dashArray = 4)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
shinyApp(ui, server)
|
Loading…
Reference in New Issue