This commit is contained in:
lewy 2023-06-14 09:12:06 +02:00
parent 0d28556d38
commit 278b1622ea
4 changed files with 554 additions and 234 deletions

View File

@ -1,4 +1,4 @@
<<<<<<< HEAD
library(dplyr) library(dplyr)
# install.packages("lifecycle") # install.packages("lifecycle")
library(ggplot2) library(ggplot2)
@ -143,147 +143,145 @@ ggplot(merged_df, aes(x = TIME_PERIOD, y = house_prices_wo_hicp, color = geo)) +
labs(x = "Year", y = 'Indeks cen nieruchomości zdyskontowany o wartość inflacji [2015 = 100]') labs(x = "Year", y = 'Indeks cen nieruchomości zdyskontowany o wartość inflacji [2015 = 100]')
======= =======
library(dplyr) library(dplyr)
# install.packages("ggplot2") # install.packages("ggplot2")
library(ggplot2) library(ggplot2)
countries = c( 'PL', 'DE', 'CZ', 'NL', 'RO') countries = c( 'PL', 'DE', 'CZ', 'NL', 'RO')
df = read.csv(".//data//prc_hicp_aind_page_linear.csv") df = read.csv(".//data//prc_hicp_aind_page_linear.csv")
df[,c("geo", "TIME_PERIOD", "OBS_VALUE")] df[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
df1 = read.csv(".//data//prc_hpi_a__custom_3617733_page_linear.csv") df1 = read.csv(".//data//prc_hpi_a__custom_3617733_page_linear.csv")
df1[,c("geo", "TIME_PERIOD", "OBS_VALUE")] df1[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
colnames(df1) colnames(df1)
df2 = read.csv(".//data//sdg_08_10_page_linear.csv") df2 = read.csv(".//data//sdg_08_10_page_linear.csv")
df2[,c("geo", "TIME_PERIOD", "OBS_VALUE")] df2[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
colnames(df2) colnames(df2)
df3 = read.csv(".//data//tec00114_page_linear.csv") df3 = read.csv(".//data//tec00114_page_linear.csv")
df3[,c("geo", "TIME_PERIOD", "OBS_VALUE")] df3[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
colnames(df3) colnames(df3)
print(df3) print(df3)
# ################################################## # ##################################################
# Single Country GDP graph # Single Country GDP graph
year_country_gdp <- df3 %>% select( TIME_PERIOD, geo, OBS_VALUE) year_country_gdp <- df3 %>% select( TIME_PERIOD, geo, OBS_VALUE)
year_country_gdp <- na.omit(year_country_gdp) year_country_gdp <- na.omit(year_country_gdp)
colnames(year_country_gdp) colnames(year_country_gdp)
df3 %>% group_by(geo) %>% str() df3 %>% group_by(geo) %>% str()
str(year_country_gdp) str(year_country_gdp)
year_country_gdp <- filter(year_country_gdp, geo %in% countries) year_country_gdp <- filter(year_country_gdp, geo %in% countries)
# Plot # Plot
ggplot(year_country_gdp, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) + ggplot(year_country_gdp, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) +
geom_line() + geom_line() +
geom_point() + geom_point() +
geom_text(aes(label = geo), hjust = -0.1, size = 3)+ geom_text(aes(label = geo), hjust = -0.1, size = 3)+
labs(x = "Rok", y = 'PKB per capita w PPP [PPS_EU27_2020=100]') + labs(x = "Rok", y = 'PKB per capita w PPP [PPS_EU27_2020=100]') +
scale_x_continuous(breaks=seq(2010,2024,2)) scale_x_continuous(breaks=seq(2010,2024,2))
year_country_gdp year_country_gdp
# ################################################## # ##################################################
# House price index HPI # House price index HPI
df1 df1
house_price_index <- df1 %>% select( TIME_PERIOD, geo, OBS_VALUE) house_price_index <- df1 %>% select( TIME_PERIOD, geo, OBS_VALUE)
house_price_index <- na.omit(house_price_index) house_price_index <- na.omit(house_price_index)
colnames(house_price_index) colnames(house_price_index)
df1 %>% group_by(geo) %>% str() df1 %>% group_by(geo) %>% str()
str(house_price_index) str(house_price_index)
house_price_index <- filter(house_price_index, geo %in% countries) house_price_index <- filter(house_price_index, geo %in% countries)
# Plot # Plot
ggplot(house_price_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) + ggplot(house_price_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) +
geom_line() + geom_line() +
geom_point() + geom_point() +
geom_text(data = house_price_index %>% geom_text(data = house_price_index %>%
group_by(geo) %>% group_by(geo) %>%
slice(n() - 1), slice(n() - 1),
aes(label = geo, hjust = -1, size = 4))+ aes(label = geo, hjust = -1, size = 4))+
scale_x_continuous(breaks=seq(2010,2024,2)) scale_x_continuous(breaks=seq(2010,2024,2))
labs(x = "Rok", y = 'Indeks Cen nieruchomości [cena z 2015 roku = 100]') labs(x = "Rok", y = 'Indeks Cen nieruchomości [cena z 2015 roku = 100]')
house_price_index house_price_index
# ###################################### # ######################################
# HICP - Harmonised Index for Consumer Prices # HICP - Harmonised Index for Consumer Prices
df df
hicp_index <- df %>% select( TIME_PERIOD, geo, OBS_VALUE) hicp_index <- df %>% select( TIME_PERIOD, geo, OBS_VALUE)
hicp_index <- na.omit(hicp_index) hicp_index <- na.omit(hicp_index)
colnames(hicp_index) colnames(hicp_index)
df %>% group_by(geo) %>% str() df %>% group_by(geo) %>% str()
str(hicp_index) str(hicp_index)
hicp_index <- filter(hicp_index, geo %in% countries) hicp_index <- filter(hicp_index, geo %in% countries)
# Plot # Plot
ggplot(hicp_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) + ggplot(hicp_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) +
geom_line() + geom_line() +
geom_point() + geom_point() +
geom_text(data = hicp_index %>% geom_text(data = hicp_index %>%
group_by(geo) %>% group_by(geo) %>%
slice(n()), slice(n()),
aes(label = geo, hjust = -0.2, size = 4)) + aes(label = geo, hjust = -0.2, size = 4)) +
labs(x = "Rok", y = 'Indeks inflacji konsumenckiej HICP [2015 = 100]') + labs(x = "Rok", y = 'Indeks inflacji konsumenckiej HICP [2015 = 100]') +
scale_x_continuous(breaks=seq(2010,2024,2)) scale_x_continuous(breaks=seq(2010,2024,2))
hicp_index hicp_index
# ######################## # ########################
# Show data discounting inflation rate # Show data discounting inflation rate
# Merge the two data frames using the 'country' and 'date' columns # Merge the two data frames using the 'country' and 'date' columns
merged_df <- merge(house_price_index, hicp_index, by = c("geo", "TIME_PERIOD")) merged_df <- merge(house_price_index, hicp_index, by = c("geo", "TIME_PERIOD"))
merged_df merged_df
# Create a new column that divides 'value1' by 'value2' # Create a new column that divides 'value1' by 'value2'
merged_df$house_prices_wo_hicp <- merged_df$OBS_VALUE.x / merged_df$OBS_VALUE.y*100 merged_df$house_prices_wo_hicp <- merged_df$OBS_VALUE.x / merged_df$OBS_VALUE.y*100
merged_df$TIME_PERIOD merged_df$TIME_PERIOD
merged_df$compound_growth <- 1 * (1 + 0.02) ^ (1:(merged_df$TIME_PERIOD-2015)) merged_df$compound_growth <- 1 * (1 + 0.02) ^ (1:(merged_df$TIME_PERIOD-2015))
# View the resulting merged data frame with the divided values # View the resulting merged data frame with the divided values
merged_df merged_df
merged_df <- na.omit(merged_df) merged_df <- na.omit(merged_df)
colnames(merged_df) colnames(merged_df)
merged_df %>% group_by(geo) %>% str() merged_df %>% group_by(geo) %>% str()
str(merged_df) str(merged_df)
merged_df <- filter(merged_df, geo %in% countries) merged_df <- filter(merged_df, geo %in% countries)
# Plot # Plot
ggplot(merged_df, aes(x = TIME_PERIOD, y = house_prices_wo_hicp, color = geo)) + ggplot(merged_df, aes(x = TIME_PERIOD, y = house_prices_wo_hicp, color = geo)) +
geom_line(linetype="dotted", size=1) + geom_line(linetype="dotted", size=1) +
geom_point(aes(x=TIME_PERIOD, y=house_prices_wo_hicp)) + geom_point(aes(x=TIME_PERIOD, y=house_prices_wo_hicp)) +
geom_text(data = merged_df %>% geom_text(data = merged_df %>%
group_by(geo) %>% group_by(geo) %>%
slice(n()), slice(n()),
aes(label = geo, hjust = -0.2, size = 4)) + aes(label = geo, hjust = -0.2, size = 4)) +
stat_function(fun=function(x) 100*(1.04)^(x-2015), aes(colour = "4% Compounding")) + stat_function(fun=function(x) 100*(1.04)^(x-2015), aes(colour = "4% Compounding")) +
stat_function(fun=function(x) 100*(1.07)^(x-2015), aes(colour = "7% Compounding")) + stat_function(fun=function(x) 100*(1.07)^(x-2015), aes(colour = "7% Compounding")) +
scale_x_continuous(breaks=seq(2010,2024,2)) + scale_x_continuous(breaks=seq(2010,2024,2)) +
labs(x = "Year", y = 'Indeks cen nieruchomości zdyskontowany o wartość inflacji [2015 = 100]') labs(x = "Year", y = 'Indeks cen nieruchomości zdyskontowany o wartość inflacji [2015 = 100]')
>>>>>>> 9cd7ec6d23058242fa1b48bf76dd80c927b5ef48

219
projekt_1_housing_new.r Normal file
View File

@ -0,0 +1,219 @@
library(dplyr)
# install.packages("ggplot2")
library(ggplot2)
library(plotly)
countries = c( 'PL', 'DE', 'CZ', 'NL', 'RO', 'XD')
countries <- unique(map_df$geo)
df = read.csv(".//data//prc_hicp_aind_page_linear.csv")
df[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
df1 = read.csv(".//data//prc_hpi_a__custom_3617733_page_linear.csv")
df1[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
colnames(df1)
df2 = read.csv(".//data//sdg_08_10_page_linear.csv")
df2[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
colnames(df2)
df3 = read.csv(".//data//tec00114_page_linear.csv")
df3[,c("geo", "TIME_PERIOD", "OBS_VALUE")]
colnames(df3)
print(df3)
# ##################################################
# Single Country GDP graph
year_country_gdp <- df3 %>% select( TIME_PERIOD, geo, OBS_VALUE)
year_country_gdp <- na.omit(year_country_gdp)
colnames(year_country_gdp)
df3 %>% group_by(geo) %>% str()
str(year_country_gdp)
year_country_gdp <- filter(year_country_gdp, geo %in% countries)
# Plot
ggplot(year_country_gdp, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) +
geom_line() +
geom_point() +
geom_text(aes(label = geo), hjust = -0.1, size = 3)+
labs(x = "Rok", y = 'PKB per capita w PPP [PPS_EU27_2020=100]') +
scale_x_continuous(breaks=seq(2010,2024,2))
plot <- ggplot(year_country_gdp, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, text = paste("Kraj: ", geo, "<br>",
"Rok: ", TIME_PERIOD, "<br>",
"Warto?? wska?nika: ", OBS_VALUE))) +
geom_line(aes(group = geo)) +
geom_point() +
labs(x = "Rok", y = 'PKB per capita w PPP [PPS_EU27_2020=100]') +
scale_x_continuous(breaks = seq(2010, 2024, 2))
plotly_plot <- ggplotly(plot, tooltip = "text")
plotly_plot
year_country_gdp
# ##################################################
# House price index HPI
df1
house_price_index <- df1 %>% select( TIME_PERIOD, geo, OBS_VALUE)
house_price_index <- na.omit(house_price_index)
colnames(house_price_index)
df1 %>% group_by(geo) %>% str()
str(house_price_index)
house_price_index <- filter(house_price_index, geo %in% countries)
# Plot
ggplot(house_price_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) +
geom_line() +
geom_point() +
geom_text(data = house_price_index %>%
group_by(geo) %>%
slice(n() - 1),
aes(label = geo, hjust = -1, size = 4))+
scale_x_continuous(breaks=seq(2010,2024,2))
labs(x = "Rok", y = 'Indeks Cen nieruchomo?ci [cena z 2015 roku = 100]')
plot <- ggplot(house_price_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, text = paste("Kraj: ", geo, "<br>",
"Rok: ", TIME_PERIOD, "<br>",
"Warto?? wska?nika: ", OBS_VALUE))) +
geom_line() +
geom_point() +
scale_x_continuous(breaks = seq(2010, 2024, 2)) +
labs(x = "Rok", y = 'Indeks Cen nieruchomo?ci [cena z 2015 roku = 100]')
plotly_plot <- ggplotly(plot, tooltip = "text")
for (i in 1:length(plotly_plot$x$data)) {
if (plotly_plot$x$data[[i]]$type == "scatter") {
plotly_plot$x$data[[i]]$mode <- "lines+markers"
}
}
plotly_plot
house_price_index
# ######################################
# HICP - Harmonised Index for Consumer Prices
df
hicp_index <- df %>% select( TIME_PERIOD, geo, OBS_VALUE)
hicp_index <- na.omit(hicp_index)
colnames(hicp_index)
df %>% group_by(geo) %>% str()
str(hicp_index)
hicp_index <- filter(hicp_index, geo %in% countries)
# Plot
ggplot(hicp_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, label = geo)) +
geom_line() +
geom_point() +
geom_text(data = hicp_index %>%
group_by(geo) %>%
slice(n()),
aes(label = geo, hjust = -0.2, size = 4)) +
labs(x = "Rok", y = 'Indeks inflacji konsumenckiej HICP [2015 = 100]') +
scale_x_continuous(breaks=seq(2010,2024,2))
plot <- ggplot(hicp_index, aes(x = TIME_PERIOD, y = OBS_VALUE, color = geo, text = paste("Kraj: ", geo, "<br>",
"Rok: ", TIME_PERIOD, "<br>",
"Warto?? wska?nika: ", OBS_VALUE))) +
geom_line() +
geom_point() +
labs(x = "Rok", y = 'Indeks inflacji konsumenckiej HICP [2015 = 100]') +
scale_x_continuous(breaks = seq(2010, 2024, 2))
plotly_plot <- ggplotly(plot, tooltip = "text")
for (i in 1:length(plotly_plot$x$data)) {
if (plotly_plot$x$data[[i]]$type == "scatter") {
plotly_plot$x$data[[i]]$mode <- "lines+markers"
}
}
plotly_plot
hicp_index
# ########################
# Show data discounting inflation rate
# Merge the two data frames using the 'country' and 'date' columns
merged_df <- merge(house_price_index, hicp_index, by = c("geo", "TIME_PERIOD"))
merged_df
# Create a new column that divides 'value1' by 'value2'
merged_df$house_prices_wo_hicp <- merged_df$OBS_VALUE.x / merged_df$OBS_VALUE.y*100
merged_df$TIME_PERIOD
merged_df$compound_growth <- 1 * (1 + 0.02) ^ (1:(merged_df$TIME_PERIOD-2015))
# View the resulting merged data frame with the divided values
merged_df
merged_df <- na.omit(merged_df)
colnames(merged_df)
merged_df %>% group_by(geo) %>% str()
str(merged_df)
unfiltered_df <- merged_df
merged_df <- filter(merged_df, geo %in% countries)
ggplot(merged_df, aes(x = TIME_PERIOD, y = house_prices_wo_hicp, color = geo)) +
geom_line(linetype="dotted", size=1) +
geom_point(aes(x=TIME_PERIOD, y=house_prices_wo_hicp)) +
geom_text(data = merged_df %>%
group_by(geo) %>%
slice(n()),
aes(label = geo, hjust = -0.2, size = 4)) +
stat_function(fun=function(x) 100*(1.04)^(x-2015), aes(colour = "4% Compounding")) +
stat_function(fun=function(x) 100*(1.07)^(x-2015), aes(colour = "7% Compounding")) +
scale_x_continuous(breaks=seq(2010,2024,2)) +
labs(x = "Year", y = 'Indeks cen nieruchomo?ci zdyskontowany o warto?? inflacji [2015 = 100]')
final_plot <- ggplot(merged_df, aes(x = TIME_PERIOD, y = house_prices_wo_hicp, color = geo,
text = paste("Kraj: ", geo, "<br>", "Rok: ", TIME_PERIOD, "<br>",
"Cena nieruchomo?ci: ", house_prices_wo_hicp))) +
geom_line(aes(group = geo), linetype = "dotted", size = 1) +
geom_point() +
geom_text(data = merged_df %>% group_by(geo) %>% slice(n()),
aes(label = "", hjust = -0.2, size = 4)) +
stat_function(fun = function(x) 100*(1.04)^(x-2015), aes(colour = "4% Compounding"), inherit.aes = FALSE) +
stat_function(fun = function(x) 100*(1.07)^(x-2015), aes(colour = "7% Compounding"), inherit.aes = FALSE) +
scale_x_continuous(breaks = seq(2010, 2024, 2)) +
labs(x = "Rok", y = "Indeks cen nieruchomości zdyskontowany o wartość inflacji [2015 = 100]")
final_plot
plotly_plot <- ggplotly(final_plot, tooltip = "text")
for (i in 1:length(plotly_plot$x$data)) {
if (plotly_plot$x$data[[i]]$name == "4% Compounding" || plotly_plot$x$data[[i]]$name == "7% Compounding") {
plotly_plot$x$data[[i]]$hoverinfo <- "name+y"
}
}
plotly_plot

View File

@ -1,89 +1,88 @@
library(tidyverse) library(tidyverse)
library(eurostat) library(eurostat)
# install.packages("ggthemes") library(leaflet)
library(leaflet) library(sf)
library(sf) library(scales)
library(scales) library(cowplot)
library(cowplot) library(ggthemes)
library(ggthemes)
library(RColorBrewer)
library(RColorBrewer) R.Version()
# Load results from project_1 # Load results from project_1
map_df = read.csv(".//data//compound_interest_housing.csv") map_df = read.csv(".//data//compound_interest_housing.csv")
map_df map_df
# Load map/polygon data from eurostat # Load map/polygon data from eurostat
SHP_0 <- get_eurostat_geospatial(resolution = 10, SHP_0 <- get_eurostat_geospatial(resolution = 10,
nuts_level = 0, nuts_level = 0,
year = 2016) year = 2016)
SHP_0 %>% SHP_0 %>%
ggplot() + ggplot() +
geom_sf() geom_sf()
EU28 <- eu_countries %>% EU28 <- eu_countries %>%
select(geo = code, name) select(geo = code, name)
SHP_28 <- SHP_0 %>% SHP_28 <- SHP_0 %>%
select(geo = NUTS_ID, geometry) %>% select(geo = NUTS_ID, geometry) %>%
inner_join(EU28, by = "geo") %>% inner_join(EU28, by = "geo") %>%
arrange(geo) %>% arrange(geo) %>%
st_as_sf() st_as_sf()
SHP_28 %>% SHP_28 %>%
ggplot() + ggplot() +
geom_sf() + geom_sf() +
scale_x_continuous(limits = c(-10, 35)) + scale_x_continuous(limits = c(-10, 35)) +
scale_y_continuous(limits = c(35, 65)) scale_y_continuous(limits = c(35, 65))
# Join datasets # Join datasets
mapdata_new <- left_join(SHP_28, map_df, by="geo", relationship = "many-to-many") mapdata_new <- left_join(SHP_28, map_df, by="geo", relationship = "many-to-many")
# Delete Greece (null values) # Delete Greece (null values)
mapdata_new <- mapdata_new[-9,] mapdata_new <- mapdata_new[-9,]
mapdata_new
mapdata_new$wiki <- paste0( "https://en.wikipedia.org/wiki/", mapdata_new$name ) mapdata_new$wiki <- paste0( "https://en.wikipedia.org/wiki/", mapdata_new$name )
# Create a continuous palette function # Create a continuous palette function
qpal <- colorQuantile("YlOrBr", mapdata_new$substr_house_prices_wo_hicp, n = 5) qpal <- colorQuantile("YlOrBr", mapdata_new$substr_house_prices_wo_hicp, n = 5)
qpal_colors <- unique(qpal(sort(mapdata_new$substr_house_prices_wo_hicp))) # hex codes qpal_colors <- unique(qpal(sort(mapdata_new$substr_house_prices_wo_hicp))) # hex codes
qpal_labs <- quantile(mapdata_new$substr_house_prices_wo_hicp, seq(0, 1, .2)) # depends on n from pal qpal_labs <- quantile(mapdata_new$substr_house_prices_wo_hicp, seq(0, 1, .2)) # depends on n from pal
qpal_labs <- paste(lag(qpal_labs), qpal_labs, sep = " - ")[-1] # first lag is NA qpal_labs <- paste(lag(qpal_labs), qpal_labs, sep = " - ")[-1] # first lag is NA
popup_content <- paste0( "<div style='text-align: center'>" popup_content <- paste0( "<div style='text-align: center'>"
, "_______________________________<br>" , "_______________________________<br>"
, "Country: ", mapdata_new$name, "<br><br>" , "Country: ", mapdata_new$name, "<br><br>"
, "</div>" , "</div>"
, "House prices index: ", mapdata_new$substr_house_prices_wo_hicp, "<br>" , "House prices index: ", mapdata_new$substr_house_prices_wo_hicp, "<br>"
, "Compound interest equivalent: ", mapdata_new$compound_interest, "%<br>" , "Compound interest equivalent: ", mapdata_new$compound_interest, "%<br>"
, "<div style='text-align: center'>" , "<div style='text-align: center'>"
, "<a href='", mapdata_new$wiki, "' target='_blank'>", "<br>" , "<a href='", mapdata_new$wiki, "' target='_blank'>", "<br>"
, "Click here to view wiki</a>", "<br>" , "Click here to view wiki</a>", "<br>"
, "</div>" ) , "</div>" )
map <- leaflet() %>% map <- leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>% addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(data=mapdata_new, addPolygons(data=mapdata_new,
fillOpacity = 0.6, # Przezroczystość fillOpacity = 0.6, # Przezroczystość
stroke = TRUE, # Borders visible stroke = TRUE, # Borders visible
color = "grey", # Border color color = "grey", # Border color
weight = 1, weight = 1,
fillColor = ~qpal(mapdata_new$substr_house_prices_wo_hicp), fillColor = ~qpal(mapdata_new$substr_house_prices_wo_hicp),
popup = popup_content, popup = popup_content,
popupOptions = popupOptions(maxWidth ="100%", closeOnClick = TRUE), popupOptions = popupOptions(maxWidth ="100%", closeOnClick = TRUE),
) %>% ) %>%
setView( lat = 51, lng = 14, zoom = 4) %>% setView( lat = 53, lng = 14, zoom = 4) %>%
addLegend("bottomright", colors = qpal_colors, addLegend("bottomright", colors = qpal_colors,
title = "<span style='white-space: pre-line;'> Real house prices \n index (2022) </span>", title = "<span style='white-space: pre-line;'> Real house prices \n index (2022) </span>",
labels = qpal_labs, labels = qpal_labs,
opacity = 1) opacity = 1)
map map

104
webapp.R Normal file
View File

@ -0,0 +1,104 @@
library(shiny)
library(leaflet)
library(ggplot2)
library(dplyr)
# Frontend
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
# Compound interest
sliderInput("range", "Compound interest:",min = 0, max = 10, value = c(4,8)),textOutput("Compound interest slider"),
# Checkboxes
checkboxGroupInput("countries", "Chosen countries:",
choiceNames = unique(map_df$geo),
choiceValues = unique(map_df$geo),
selected = c("PL", "DE", "CZ")
),
width=3
),
mainPanel(
h1("Real house prices index"),
tabsetPanel(
tabPanel("Plot", plotOutput("final_plot")),
tabPanel("Map", leafletOutput("mymap")),
tabPanel("Table", dataTableOutput('table'))
),
width = 9
),
fluid = TRUE
)
)
# Backend
server <- function(input, output, session) {
# Używanie wektora indeksu do indeksowania innych danych
output$table <- renderDataTable(merged_df[,!names(merged_df) %in% c("OBS_VALUE.x", "OBS_VALUE.y")])
# Plot module
output$final_plot <- renderPlot({
# final_plot <-
ggplot(filter(merged_df, geo %in% input$countries), aes(x = TIME_PERIOD, y = house_prices_wo_hicp, color = geo,
text = paste("Kraj: ", geo, "<br>", "Rok: ", TIME_PERIOD, "<br>",
"Cena nieruchomości: ", house_prices_wo_hicp))) +
geom_line(aes(group = geo), linetype = "dotted", size = 1) +
geom_point() +
geom_text(data = merged_df %>% group_by(geo) %>% slice(n()),
aes(label = "", hjust = -0.2, size = 4)) +
stat_function(fun = function(x) 100*(1+input$range[1]/100)^(x-2015), aes(colour = "4% Compounding"), inherit.aes = FALSE) +
stat_function(fun = function(x) 100*(1+input$range[2]/100)^(x-2015), aes(colour = "7% Compounding"), inherit.aes = FALSE) +
scale_x_continuous(breaks = seq(2010, 2024, 2)) +
# labs(x = "Rok", y = "Indeks cen nieruchomości zdyskontowany o wartość inflacji [2015 = 100]") +
theme( axis.title = element_blank() )
# ggplotly(final_plot, tooltip = "text")
#for (i in 1:length(plotly_plot$x$data)) {
# if (plotly_plot$x$data[[i]]$name == "4% Compounding" || plotly_plot$x$data[[i]]$name == "7% Compounding") {
# plotly_plot$x$data[[i]]$hoverinfo <- "name+y"
# }
#}
#plotly_plot
})
# Map module
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(data=mapdata_new,
fillOpacity = 0.6, # Przezroczystość
stroke = TRUE, # Borders visible
color = "grey", # Border color
weight = 1,
fillColor = ~qpal(mapdata_new$substr_house_prices_wo_hicp),
popup = popup_content,
popupOptions = popupOptions(maxWidth ="100%", closeOnClick = TRUE)
) %>%
setView( lat = 49, lng = 14, zoom = 4) %>%
addLegend("bottomright", colors = qpal_colors,
title = "<span style='white-space: pre-line;'> Real house prices \n index (2022) </span>",
labels = qpal_labs,
opacity = 1)
}) # End of map module
}# End of server
# Run
shinyApp(ui, server)