diff --git a/carbonator/app.R b/carbonator/app.R new file mode 100644 index 0000000000000000000000000000000000000000..6fe59ab7ddbe3a23ef3d4d88fdaa95e3149a0c13 --- /dev/null +++ b/carbonator/app.R @@ -0,0 +1,298 @@ +# +# This is a Shiny web application. You can run the application by clicking +# the 'Run App' button above. +# +# Find out more about building applications with Shiny here: +# +# http://shiny.rstudio.com/ +# + +dSource <- "https://lowcarbonbuildings.wordpress.com/2020/02/29/the-carbon-footprint-of-production-and-how-much-it-matters-part-1" +beisSource <- "https://www.gov.uk/government/publications/greenhouse-gas-reporting-conversion-factors-2019" + +library(shiny) +library(ggplot2) +library(data.table) + +# load factors +factor_dt <- data.table::fread("data/2019.csv") + +# Define UI for application that draws a histogram +ui <- fluidPage( + + # Application title + titlePanel("The Carbonator"), + + # Sidebar with a slider input for number of bins + sidebarLayout(position = "right", + sidebarPanel( + h3("Your carbon"), + # Output: Bar chart + plotOutput(outputId = "distPlot") + ), + + # Show a plot of the generated distribution + mainPanel( + tabsetPanel(type = "tabs", + tabPanel("Heat and hot water", + fluidRow( + column(3,helpText("Electricity (", + factor_dt[Contributor == "Electricity", unit],")" + ) + ), + column(2,numericInput("elec", + value = factor_dt[Contributor == "Electricity", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor == "Electricity", mFactor], " Kg CO2e/kWh (BEIS 2018)") + ) + ), + fluidRow( + column(3,helpText("Gas (", factor_dt[Contributor == "Gas", unit],")" + ) + ), + column(2,numericInput("gas", + value = factor_dt[Contributor == "Gas", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor == "Gas", mFactor], " Kg CO2e/kWh") + ) + ), + fluidRow( + column(3,helpText("Oil (", factor_dt[Contributor == "Oil", unit], ")" + ) + ), + column(2,numericInput("oil", + value = factor_dt[Contributor == "Oil", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor == "Oil", mFactor], " Kg CO2e/l") + ) + ), + fluidRow( + column(3,helpText("Coal (", factor_dt[Contributor == "Coal", unit], ")" + ) + ), + column(2,numericInput("coal", + value = factor_dt[Contributor == "Coal", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor == "Coal", mFactor], " Kg CO2e/t") + ) + ), + fluidRow( + column(3,helpText("Wood (", factor_dt[Contributor == "Wood", unit], ")" + ) + ), + column(2,numericInput("wood", + value = factor_dt[Contributor == "Wood", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor == "Wood", mFactor], " Kg CO2e/t") + ) + ) + ), + tabPanel("Car use", + fluidRow( + column(3,helpText("Car petrol < 1.4l (", factor_dt[Contributor %like% "< 1.4", unit], ")" + ) + ), + column(2,numericInput("car14l", + value = factor_dt[Contributor %like% "< 1.4", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "< 1.4", mFactor], " Kg CO2e/mile") + ) + ), + fluidRow( + column(3,helpText("Car petrol > 1.4l (", factor_dt[Contributor %like% "> 1.4", unit], ")" + ) + ), + column(2,numericInput("car14m", + value = factor_dt[Contributor %like% "> 1.4", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "> 1.4", mFactor], " Kg CO2e/mile") + ) + ), + fluidRow( + column(3,helpText("Car diesel < 1.7l (", factor_dt[Contributor %like% "< 1.7", unit], ")" + ) + ), + column(2,numericInput("diesel17l", + value = factor_dt[Contributor %like% "< 1.7", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "< 1.7", mFactor], " Kg CO2e/mile") + ) + ), + fluidRow( + column(3,helpText("Car diesel > 1.7l (", factor_dt[Contributor %like% "> 1.7", unit], ")" + ) + ), + column(2,numericInput("diesel17m", + value = factor_dt[Contributor %like% "> 1.7", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "> 1.7", mFactor], " Kg CO2e/mile") + ) + ), + fluidRow( + column(3,helpText("Car elec (small) (", factor_dt[Contributor %like% "small", unit], ")" + ) + ), + column(2,numericInput("elecSmall", + value = factor_dt[Contributor %like% "small", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "small", mFactor], " Kg CO2e/mile (BEIS 2018)") + ) + ), + fluidRow( + column(3,helpText("Car elec (medium) (", factor_dt[Contributor %like% "medium", unit], ")" + ) + ), + column(2,numericInput("elecMedium", + value = factor_dt[Contributor %like% "medium", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "medium", mFactor], " Kg CO2e/mile (BEIS 2018)") + ) + ), + fluidRow( + column(3,helpText("Car elec (large) (", factor_dt[Contributor %like% "large", unit], ")" + ) + ), + column(2,numericInput("elecLarge", + value = factor_dt[Contributor %like% "large", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "large", mFactor], " Kg CO2e/mile (BEIS 2018)") + ) + ) + ), + tabPanel("Public transport", + fluidRow( + column(3,helpText("Bus (", factor_dt[Contributor %like% "Bus", unit], ")" + ) + ), + column(2,numericInput("bus", + value = factor_dt[Contributor %like% "Bus", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "Bus", mFactor], " Kg CO2e/mile") + ) + ), + fluidRow( + column(3,helpText("Train (", factor_dt[Contributor %like% "Train", unit], ")" + ) + ), + column(2,numericInput("train", + value = factor_dt[Contributor %like% "Train", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "Train", mFactor], " Kg CO2e/mile") + ) + ), + fluidRow( + column(3,helpText("Air (", factor_dt[Contributor %like% "Air", unit], ")" + ) + ), + column(2,numericInput("air", + value = factor_dt[Contributor %like% "Air", Usage], + label = "" + ) + ), + column(4,helpText(factor_dt[Contributor %like% "Air", mFactor], " Kg CO2e/mile") + ) + ) + ), + tabPanel("Diet", + fluidRow( + column(4,helpText("Diet (choose)" + ) + ), + column(3,selectInput("diet", label = "", + choices = list("Standard " = 2200, + "Vegan with minimal processed food & low waste " = 1100, + "Ignore my diet" = 0), + selected = 2200) + ), + column(4,p("Standard: 2200 kg C02e"), + p("Vegan, low waste: 1100 Kg CO2e"), + p("Ignore diet: 0 Kg CO2e"), + p("If you want to investigate the carbon footprint of your food try the ", + a("BBC calculator", + href = "https://www.bbc.co.uk/news/science-environment-46459714") + ), + ) + )) + ), + p("Enter your own yearly numbers above to get your annual CO2e carbon footprint (in kg)."), + p("Or just enter any old number to see what happens. For example you can compare trains & planes for the same journey distance."), + p("To reset the default values just reload the page."), + p(), + p("Data source: Judith Thornton's ", + a("carbon footprint calculator", + href = dSource), " or"), + p("(BEIS 2018) ", + a("table", href = "")) + ) + ) +) + +# Define server logic required to draw a histogram +server <- function(input, output) { + + output$distPlot <- renderPlot({ + # generate input$xxxx from ui.R + dt <- data.table() + dt <- rbind(dt, + # must be an easier way + cbind("Energy: Electricity", input$elec * factor_dt[Contributor == "Electricity", mFactor]), + cbind("Energy: Gas", input$gas * factor_dt[Contributor == "Gas", mFactor]), + cbind("Energy: Oil", input$oil * factor_dt[Contributor == "Oil", mFactor]), + cbind("Energy: Coal", input$coal * factor_dt[Contributor == "Coal", mFactor]), + cbind("Energy: Wood", input$wood * factor_dt[Contributor == "Wood", mFactor]), + cbind("Car petrol < 1.4l", input$car14l * factor_dt[Contributor %like% "< 1.4l", mFactor]), + cbind("Car petrol > 1.4l", input$car14m * factor_dt[Contributor %like% "> 1.4l", mFactor]), + cbind("Car diesel < 1.7l", input$diesel17l * factor_dt[Contributor %like% "< 1.7l", mFactor]), + cbind("Car diesel > 1.7l", input$diesel17m * factor_dt[Contributor %like% "> 1.7l", mFactor]), + cbind("Car elec (small)", input$elecSmall * factor_dt[Contributor %like% "small", mFactor]), + cbind("Car elec (medium)", input$elecMedium * factor_dt[Contributor %like% "medium", mFactor]), + cbind("Car elec (lqrge)", input$elecLarge * factor_dt[Contributor %like% "large", mFactor]), + cbind("Transport: Train", input$train * factor_dt[Contributor %like% "Train", mFactor]), + cbind("Transport: Bus", input$bus * factor_dt[Contributor %like% "Bus", mFactor]), + cbind("Transport: Air", input$air * factor_dt[Contributor %like% "Air", mFactor]), + cbind("Diet", input$diet) + ) + # draw the bar chart + dt[, source := V1] + dt[, co2e := as.numeric(V2)] + ggplot2::ggplot(dt[co2e > 0], aes(x = source, y = co2e/1000, fill = V1)) + + geom_col() + + scale_fill_viridis_d(guide=FALSE) + + labs(y = "Tonnes CO2e", + x = "Source") + + coord_flip() + #totalCarbon <- sum(dt$co2e) + #p("Total carbon footprint:" , totalCarbon) + }) +} + +# Run the application +shinyApp(ui = ui, server = server) diff --git a/carbonator/data/2018.csv b/carbonator/data/2018.csv new file mode 100644 index 0000000000000000000000000000000000000000..8309effe458b5409df78d941dc57356c6588acc6 --- /dev/null +++ b/carbonator/data/2018.csv @@ -0,0 +1,19 @@ +Contributor,mFactor,unit,Usage,kg CO2 e,Source:,url +Electricity,0.28307,kWh,12000,,BEIS 2018,https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/715425/Conversion_Factors_2018_-_Condensed_set__for_most_users__v01-01.xls +Gas,0.185,kWh,10000,,, +Wood,190,tonnes,,,, +Oil,2.53,litres,,,, +Coal,2881.65,tonnes,,,, +"car, petrol < 1.4l",0.25,miles,10000,2500,, +"car, petrol > 1.4l",0.457,miles,10000,4570,, +"car, diesel < 1.7l",0.234,miles,10000,2340,, +"car, diesel > 1.7l",0.346,miles,10000,3460,, +elec (small),0.08,miles,10000,810,BEIS 2018,https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/715425/Conversion_Factors_2018_-_Condensed_set__for_most_users__v01-01.xls +elec (medium),0.09,miles,10000,948,BEIS 2018,https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/715425/Conversion_Factors_2018_-_Condensed_set__for_most_users__v01-01.xls +elec (large),0.12,miles,10000,1157,BEIS 2018,https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/715425/Conversion_Factors_2018_-_Condensed_set__for_most_users__v01-01.xls +Bus,0.197,miles,10000,1970,, +Train,0.075,miles,10000,750,, +Air,0.255,miles,10000,2550,, +standard diet,2200,,,2200,, +"vegan, min processed, low waste",1100,,,,, +,,,,23256,, diff --git a/carbonator/data/2018.xlsx b/carbonator/data/2018.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a00a4e796627826b863fefac3d767819a56176fe Binary files /dev/null and b/carbonator/data/2018.xlsx differ diff --git a/carbonator/data/2019.csv b/carbonator/data/2019.csv new file mode 100644 index 0000000000000000000000000000000000000000..2e351288aacf05d38bc66719e90af27cc56a9ef7 --- /dev/null +++ b/carbonator/data/2019.csv @@ -0,0 +1,19 @@ +Contributor,mFactor,unit,Usage,kg CO2 e,Source:,url +Electricity,0.26,kWh,12000,3067,BEIS 2019, https://www.gov.uk/government/publications/greenhouse-gas-reporting-conversion-factors-2019 +Gas,0.185,kWh,10000,1850,, +Wood,190,tonnes,2,380,, +Oil,2.53,litres,1000,2530,, +Coal,2881.65,tonnes,1,2882,, +"car, petrol < 1.4l",0.25,miles,10000,2500,, +"car, petrol > 1.4l",0.457,miles,10000,4570,, +"car, diesel < 1.7l",0.234,miles,10000,2340,, +"car, diesel > 1.7l",0.346,miles,10000,3460,, +elec (small),0.07,miles,10000,735,BEIS 2018,https://www.gov.uk/government/publications/greenhouse-gas-reporting-conversion-factors-2019 +elec (medium),0.09,miles,10000,856,BEIS 2018,https://www.gov.uk/government/publications/greenhouse-gas-reporting-conversion-factors-2019 +elec (large),0.11,miles,10000,1076,BEIS 2018,https://www.gov.uk/government/publications/greenhouse-gas-reporting-conversion-factors-2019 +Bus,0.197,miles,10000,1970,, +Train,0.075,miles,10000,750,, +Air,0.255,miles,10000,2550,, +standard diet,2200,,,2200,, +"vegan, min processed, low waste",1100,,,,, +,,,,33716,, \ No newline at end of file diff --git a/carbonator/data/2019.xlsx b/carbonator/data/2019.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0068d0a6c0b94cffc450e2099a6205dcab7d8c46 Binary files /dev/null and b/carbonator/data/2019.xlsx differ diff --git a/carbonator/data/~$2018.xlsx b/carbonator/data/~$2018.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1da8522e5ad8a88d9fa96f95f17fb336d57a006c Binary files /dev/null and b/carbonator/data/~$2018.xlsx differ diff --git a/carbonator/data/~$2019.xlsx b/carbonator/data/~$2019.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1da8522e5ad8a88d9fa96f95f17fb336d57a006c Binary files /dev/null and b/carbonator/data/~$2019.xlsx differ