library(leaflet)
library(dplyr)
library(sf)
library(maps)
us_states <- st_as_sf(maps::map("state", plot = FALSE, fill = TRUE))
energy_data <- read.csv("EnergyDataOrig.csv")
# Merge with spatial data
us_energy <- merge(us_states, energy_data, by = "ID")
#Creating Color Palettes
pal_total <- colorNumeric("YlOrRd", domain = us_energy$Total.Production)
pal_imports <- colorNumeric("RdYlBu", domain = us_energy$Net.Energy.Production)
pal_renewable <- colorNumeric("Greens", domain = us_energy$Renewables.Production)
pal_coal <- colorNumeric("Blues", domain = us_energy$Coal.Production)
pal_petroleum <- colorNumeric("Reds", domain = us_energy$Petroleum.Production)
pal_nuclear <- colorNumeric("Purples", domain = us_energy$Nuclear.Production)
pal_gas <- colorNumeric("Greys", domain = us_energy$Natural.Gas.Production)
#Creating the Map
energy_map <- leaflet(us_energy) %>%
addTiles() %>%
# Total Production Layer
addPolygons(
group = "Total Production (Billion Btu)",
fillColor = ~pal_total(Total.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Total Production (Billion Btu):", round(Total.Production))
) %>%
# Individual Energy Source Layers
addPolygons(
group = "Coal Production (%)",
fillColor = ~pal_coal(Coal.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Coal Production Percentage:", round(Coal.Production), "%")
) %>%
addPolygons(
group = "Natural Gas Production (%)",
fillColor = ~pal_gas(Natural.Gas.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Natural Gas Production Percentage:", round(Natural.Gas.Production), "%")
) %>%
addPolygons(
group = "Petroleum Production (%)",
fillColor = ~pal_petroleum(Petroleum.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Petroleum Production Percentage:", round(Petroleum.Production), "%")
) %>%
addPolygons(
group = "Nuclear Production (%)",
fillColor = ~pal_nuclear(Nuclear.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Nuclear Production Percentage:", round(Nuclear.Production), "%")
) %>%
addPolygons(
group = "Renewable Production (%)",
fillColor = ~pal_renewable(Renewables.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Renewable:", round(Renewables.Production), "%")
) %>%
addPolygons(
group = "Net Imports (Production - Consumption) (Billion Btu)",
fillColor = ~pal_imports(Net.Energy.Production),
fillOpacity = 0.8,
color = "white",
weight = 1,
label = ~paste(State, "Net Imports (Billion Btu):", round(Net.Energy.Production))
) %>%
# Layer control with more options
addLayersControl(
baseGroups = c(
"Total Production (Billion Btu)",
"Coal Production (%)",
"Natural Gas Production (%)",
"Petroleum Production (%)",
"Nuclear Production (%)",
"Renewable Production (%)",
"Net Imports (Production - Consumption) (Billion Btu)"
),
options = layersControlOptions(collapsed = TRUE)
) %>%
# Add scale bar
addScaleBar(position = "bottomleft") %>%
# Set view
setView(lng = -98.5795, lat = 39.8283, zoom = 4) %>%
addMiniMap(toggleDisplay = FALSE)
# Display the comprehensive map
energy_map
```