Add bar plot to right panel
This commit is contained in:
@@ -6,6 +6,7 @@ library(sf)
|
|||||||
library(htmltools)
|
library(htmltools)
|
||||||
library(dplyr)
|
library(dplyr)
|
||||||
library(purrr)
|
library(purrr)
|
||||||
|
library(ggplot2)
|
||||||
|
|
||||||
# Json of Crime Reports
|
# Json of Crime Reports
|
||||||
crime_json <- fromJSON(file="data.json")
|
crime_json <- fromJSON(file="data.json")
|
||||||
@@ -30,6 +31,29 @@ map_data_to_table <- function(bezirk, stadtteil, year) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
map_data_to_top3_plot <- function(bezirk, stadtteil, year) {
|
||||||
|
year <- as.character(trimws(year))
|
||||||
|
req(bezirk)
|
||||||
|
req(stadtteil)
|
||||||
|
req(year)
|
||||||
|
komplettes_tibble <- map_df(names(crime_json[[bezirk]][[stadtteil]]), function(crime) {
|
||||||
|
row <- crime_json[[bezirk]][[stadtteil]][[crime]][[year]]
|
||||||
|
tibble(
|
||||||
|
Name = crime,
|
||||||
|
Erfasst = as.integer(row[["Erfasste Fälle"]]),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
# Sortieren und Beschränken auf die Ränge 2, 3 und 4
|
||||||
|
top_3_tibble <- komplettes_tibble %>%
|
||||||
|
# Sortieren: Absteigend nach "Erfasste Fälle". Der höchste Wert ist nun in Zeile 1.
|
||||||
|
arrange(desc(Erfasst)) %>%
|
||||||
|
# Beschränken: Wählt die Zeilen 2, 3 und 4 aus.
|
||||||
|
# Dies sind die Ränge 2, 3 und 4.
|
||||||
|
slice(2:4)
|
||||||
|
|
||||||
|
return(top_3_tibble)
|
||||||
|
}
|
||||||
|
|
||||||
#GeoJson for Bezirke
|
#GeoJson for Bezirke
|
||||||
geo_bezirke <- st_read("geobezirke-parsed.json")
|
geo_bezirke <- st_read("geobezirke-parsed.json")
|
||||||
geo_bezirke <- st_transform(geo_bezirke, crs = 4326)
|
geo_bezirke <- st_transform(geo_bezirke, crs = 4326)
|
||||||
@@ -85,12 +109,12 @@ ui <- function() {
|
|||||||
div(
|
div(
|
||||||
class = "d-flex align-items-end gap-2",
|
class = "d-flex align-items-end gap-2",
|
||||||
h5(strong("Bezirk:"), style = "margin-bottom: 0;"),
|
h5(strong("Bezirk:"), style = "margin-bottom: 0;"),
|
||||||
textOutput("txt_map_selection_bezirk"),
|
textOutput("txt_map_selection_bezirk"),
|
||||||
),
|
),
|
||||||
div(
|
div(
|
||||||
class = "d-flex align-items-end gap-2",
|
class = "d-flex align-items-end gap-2",
|
||||||
h5(strong("Stadtteil:"), style = "margin-bottom: 0;"),
|
h5(strong("Stadtteil:"), style = "margin-bottom: 0;"),
|
||||||
textOutput("txt_map_selection_stadtteil"),
|
textOutput("txt_map_selection_stadtteil"),
|
||||||
),
|
),
|
||||||
plotOutput("grph_top3"),
|
plotOutput("grph_top3"),
|
||||||
#tableOutput("tbl_2024"),
|
#tableOutput("tbl_2024"),
|
||||||
@@ -258,11 +282,22 @@ server <- function(input, output, session) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
output$txt_map_selection_bezirk <- renderText({
|
output$txt_map_selection_bezirk <- renderText({
|
||||||
paste("Bezirk:", currently_selected_bezirk())
|
currently_selected_bezirk()
|
||||||
})
|
})
|
||||||
output$txt_map_selection_stadtteil <- renderText({
|
output$txt_map_selection_stadtteil <- renderText({
|
||||||
paste("Stadtteil:", currently_selected_stadtteil())
|
currently_selected_stadtteil()
|
||||||
})
|
})
|
||||||
|
output$grph_top3 <- renderPlot({
|
||||||
|
data_tibble <- map_data_to_top3_plot(
|
||||||
|
bezirk = currently_selected_bezirk(),
|
||||||
|
stadtteil = currently_selected_stadtteil(),
|
||||||
|
year = "2024"
|
||||||
|
)
|
||||||
|
req(nrow(data_tibble) > 0)
|
||||||
|
ggplot(data_tibble, aes(x = Name, y = Erfasst, fill = Name)) +
|
||||||
|
geom_col()
|
||||||
|
})
|
||||||
|
|
||||||
output$tbl_2024 <- renderTable(
|
output$tbl_2024 <- renderTable(
|
||||||
map_data_to_table(
|
map_data_to_table(
|
||||||
bezirk = currently_selected_bezirk(),
|
bezirk = currently_selected_bezirk(),
|
||||||
|
|||||||
Reference in New Issue
Block a user