Created
September 27, 2022 12:14
-
-
Save hypebright/bde3d4e079c8fcc95dcf38dc28791641 to your computer and use it in GitHub Desktop.
Demo of the histoslider package
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# install histoslider | |
# remotes::install_github("cpsievert/histoslider") | |
# load libraries | |
library(shiny) | |
library(histoslider) | |
library(data.table) | |
library(quantmod) # to get current exchange rates | |
# load airbnb dataset containing properties in London | |
# source: http://insideairbnb.com/get-the-data | |
data <- fread("http://data.insideairbnb.com/united-kingdom/england/london/2022-09-10/data/listings.csv.gz") | |
# some data cleaning to get a numeric price | |
data[, price_num := as.numeric(gsub('\\$|,', '', price))] | |
# change prices from USD to GBP | |
exchange_rate <- getQuote(paste0('USD', 'GBP', "=X"))$Last | |
data[, price_num := price_num * exchange_rate] | |
# limit to 1000 GBP per night | |
data[price_num > 1000, price_num := 1000] | |
ui <- fluidPage( | |
titlePanel("Histoslider for London Airbnb data 🏡 - demo"), | |
br(), | |
fluidRow( | |
column(12, | |
input_histoslider(id = "price_range", | |
label = "Price (GBP) per night", | |
values = data$price_num, | |
breaks = seq(0, 1000, by = 10), | |
options = list( | |
showOnDrag = FALSE, | |
handleLabelFormat = ",.2f", # this uses d3 format: https://github.com/d3/d3-format | |
selectedColor = "#219265", | |
unselectedColor = "#DDDDDD", | |
height = 400 | |
)) | |
) | |
), | |
br(), | |
fluidRow( | |
column(12, | |
align = 'center', | |
textOutput('property_count') | |
) | |
), | |
) | |
server <- function(input, output, session) { | |
observe({ | |
print(input$price_range) | |
output$property_count <- renderText(paste0( | |
prettyNum(nrow(data[price_num >= input$price_range[1] & price_num <= input$price_range[2],]), big.mark = ','), | |
' available properties')) | |
}) | |
} | |
shinyApp(ui = ui, server = server) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment