Code copyright (c) 2024 the author
License:
To cite:
Code:
Inspired by https://twitter.com/DrSimEvans/status/1508409309775994892
This analysis uses the New Zealand Electricity Authority’s Generation data.
Values are in kWh per half hour https://www.emi.ea.govt.nz/Wholesale/Datasets/Generation/Generation_MD
As far as we can work out this data does not include distributed (i.e. non-grid connected) generation such as small scale wind, solar, hydro, biomass etc which is connected to the LV network. This means the EA data is likely to underestimate total generation and potentially underestimate the proportion of total generation that is renewable. It is possible that this could be fixed using embedded wind & solar generation data from the metered embedded generation data although this may still not include household level (micro)generation.
rmdParams$olderThan <- 7
If the data we have previously downloaded is more than 7` days old, re-download.
rmdParams$dataPath <- "~/Dropbox/data/NZ_ElecAuth/processed/"
# load all the files we have using rbindlist
# probably ought to do some filtering here
filesToLoad <- list.files(rmdParams$dataPath, pattern = ".csv",
full.names = TRUE)
orig_DT <- rbindlist(lapply(filesToLoad, fread))
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
## Warning in rbindlist(lapply(filesToLoad, fread)): Coercing 'character' RHS
## to 'integer' to match the type of column 7 named 'Trading_Date'.
## Warning in rbindlist(lapply(filesToLoad, fread)): NAs introduced by
## coercion
setnames(orig_DT, "rDateTime", "dv_dateTime")
message("Original data range from: ", min(orig_DT$dv_dateTime, na.rm = TRUE))
## Original data range from: 2010-01-01 00:15:00
message("...to: ", max(orig_DT$dv_dateTime , na.rm = TRUE))
## ...to: 2024-10-31 23:45:00
# make wide for ease of aggregation ----
# sum over fuel code
orig_DT[, kWh := as.numeric(kWh)] # just in case
## Warning in eval(jsub, SDenv, parent.frame()): NAs introduced by coercion
nzGenMix_wide_dt <- dcast(orig_DT[!is.na(dv_dateTime)], dv_dateTime ~ Fuel_Code, value.var = "kWh", fun.aggregate = sum)
## Processed 400728 groups out of 1686616. 24% done. Time elapsed: 3s. ETA: 9s.Processed 542244 groups out of 1686616. 32% done. Time elapsed: 4s. ETA: 8s.Processed 679066 groups out of 1686616. 40% done. Time elapsed: 5s. ETA: 7s.Processed 796407 groups out of 1686616. 47% done. Time elapsed: 6s. ETA: 6s.Processed 936044 groups out of 1686616. 55% done. Time elapsed: 7s. ETA: 5s.Processed 1074430 groups out of 1686616. 64% done. Time elapsed: 8s. ETA: 4s.Processed 1212355 groups out of 1686616. 72% done. Time elapsed: 9s. ETA: 3s.Processed 1350327 groups out of 1686616. 80% done. Time elapsed: 10s. ETA: 2s.Processed 1492444 groups out of 1686616. 88% done. Time elapsed: 11s. ETA: 1s.Processed 1630927 groups out of 1686616. 97% done. Time elapsed: 12s. ETA: 0s.Processed 1686616 groups out of 1686616. 100% done. Time elapsed: 12s. ETA: 0s.
# add derived variables used later ----
addDerivedVars <- function(dt){
dt[, dv_year := lubridate::year(dv_dateTime)]
dt[, dv_date := lubridate::as_date(dv_dateTime)]
dt[, dv_month := lubridate::month(dv_dateTime)]
dt[, dv_hour := lubridate::hour(dv_dateTime)]
dt[, dv_hms := hms::as_hms(dv_dateTime)]
dt <- gridCarbon::add_season(dt,
dateVar = "dv_dateTime",
h = "S")
dt <- gridCarbon::add_peakPeriod(dt,
dateTime = "dv_dateTime")
return(dt)
}
nzGenMix_wide_dt <- addDerivedVars(nzGenMix_wide_dt)
nzGenMix_dt <- addDerivedVars(orig_DT[!is.na(dv_dateTime)])
#message("Remove incomplete years to avoid weird things in plots.")
message("Filtered data range from: ", min(nzGenMix_wide_dt$dv_dateTime))
## Filtered data range from: 2010-01-01 00:15:00
message("...to: ", max(nzGenMix_wide_dt$dv_dateTime))
## ...to: 2024-10-31 23:45:00
rmdParams$plotCap <- paste0("Data: NZ EA Generation ",
min(nzGenMix_wide_dt$dv_date), " - ",
max(nzGenMix_wide_dt$dv_date),
"\nPlot: @dataknut \nCode: https://github.com/dataknut/gridCarbon")
# > recent date cut ----
recentDateCut <- max(nzGenMix_wide_dt$dv_date - (6*30)) # roughly 6 months
Note:
- the data may cover more years than we need
- the data may contain partial years - BEWARE incomplete years in plots using annual totals or means across all months.
Inspired by https://twitter.com/DrSimEvans/status/1508409309775994892
Which explored the relationship between % renewable and fossil-fuel generation for Great Britain (see also https://dataknut.github.io/gridCarbon/gbGenMixTrends.html)
This looks like daily data.
# add together the % and totals we want (half-hourly)
nzGenMix_wide_dt[, dv_total := Coal + Diesel + Gas + Geo + Hydro + Solar + Wind + Wood]
nzGenMix_wide_dt[, dv_coal_gas := Coal + Gas]
nzGenMix_wide_dt[, dv_coal_gas_pc := 100 * dv_coal_gas/dv_total]
nzGenMix_wide_dt[, dv_solar_wind := Solar + Wind]
nzGenMix_wide_dt[, dv_solar_wind_pc := 100 * dv_solar_wind/dv_total]
# keep the vars we want for clarity
temp <- nzGenMix_wide_dt[, .(dv_dateTime, dv_coal_gas, dv_solar_wind,
dv_coal_gas_pc, dv_solar_wind_pc, dv_total)]
temp[, dv_date := lubridate::date(dv_dateTime)]
# aggregate to daily data for plotting
plotDT <- temp[,
.(mean_dv_solar_wind_pc = mean(dv_solar_wind_pc),
mean_dv_coal_gas_pc = mean(dv_coal_gas_pc),
total_dv_coal_gas = sum(dv_coal_gas),
total_dv_solar_wind = sum(dv_solar_wind),
total_dv_total = sum(dv_total),
nObs = .N), # to check for days with < 48 half hours
keyby = .(dv_date)
]
plotDT[, dv_year := lubridate::year(dv_date)] # for plots
plotDT[, total_dv_coal_gas_pc := 100 * total_dv_coal_gas/total_dv_total] # daily %
plotDT[, total_dv_solar_wind_pc := 100 * total_dv_solar_wind/total_dv_total]
message("Check for days with less than 48 hours - this will be truncated data due to DST breaks. We hate DST breaks")
## Check for days with less than 48 hours - this will be truncated data due to DST breaks. We hate DST breaks
table(plotDT$nObs)
##
## 46 48
## 15 5403
Figure 4.1 shows the mean half-hourly % generation by each type per day. This is slightly convoluted - it is the mean of the sum of the 48 daily half-hourly values. Unfold the code above for clarity.
The smoothed curves are estimated for each year. The lines terminate at the maximum value for the year. I’m still trying to decide if they tell us anything useful.
ggplot2::ggplot(plotDT[dv_year > 2011], aes(x = mean_dv_solar_wind_pc,
y = mean_dv_coal_gas_pc,
colour = as.factor(dv_year),
alpha = dv_year)) +
geom_point() +
geom_smooth() +
scale_colour_viridis_d(name = "Year") +
guides(alpha = "none") +
labs(x = "Solar & wind (mean % of half-hourly generation per day)",
y = "Coal & gas (mean % of half-hourly generation per day)",
caption = rmdParams$plotCap)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 4.1: Mean half-hourly % generation by each type per day
# save it
ggplot2::ggsave(filename = "meanNZrenewablesVsfossilHalfHourPC.png",
path = rmdParams$plotPath,
height = 5)
## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 4.2 shows the percentage of daily generation by type. This is less convoluted as it is the sum of generation per day for the two categories (solar + wind vs gas + coal) as a % of total daily generation.
Again the smoothed curve is estimated for each year.
ggplot2::ggplot(plotDT[dv_year > 2011], aes(x = total_dv_solar_wind_pc,
y = total_dv_coal_gas_pc,
colour = as.factor(dv_year),
alpha = dv_year)) +
geom_point() +
geom_smooth() +
scale_colour_viridis_d(name = "Year") +
guides(alpha = "none") +
labs(x = "Solar & wind (% of total daily generation)",
y = "Coal & gas (% of total daily generation)",
caption = rmdParams$plotCap)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 4.2: Percentage of daily generation by type
ggplot2::ggsave(filename = "dailyNZpcGenMix.png",
path = rmdParams$plotPath,
height = 5)
## Saving 7 x 5 in image
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Just cos we can… helpfully split into ‘peak’ and ‘off peak’ periods.
Peak period definitions:
Again the smoothed curve is estimated for each year (and demand period).
ggplot2::ggplot(nzGenMix_wide_dt[dv_year > 2011], aes(x = dv_solar_wind_pc,
y = dv_coal_gas_pc,
alpha = dv_year,
colour = as.factor(dv_year))) +
geom_point() +
facet_wrap(. ~ dv_peakPeriod) +
geom_smooth() +
scale_colour_viridis_d(name = "Year") +
guides(alpha = "none") +
labs(x = "Solar & wind (% of half-hourly generation)",
y = "Coal & gas (% of half-hourly generation)",
caption = rmdParams$plotCap)
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
## Warning: Failed to fit group 4.
## Failed to fit group 4.
## Failed to fit group 4.
## Failed to fit group 4.
## Failed to fit group 4.
## Caused by error in `gam.reparam()`:
## ! NA/NaN/Inf in foreign function call (arg 3)
Figure 4.3: Percentage of half-hourly generation by type
ggplot2::ggsave(filename = "halfHourlyNZ_PCgenByPeakPeriod.png",
path = rmdParams$plotPath,
height = 5)
## Saving 7 x 5 in image
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
## Warning: Failed to fit group 4.
## Failed to fit group 4.
## Failed to fit group 4.
## Failed to fit group 4.
## Failed to fit group 4.
## Caused by error in `gam.reparam()`:
## ! NA/NaN/Inf in foreign function call (arg 3)
plotDT <- nzGenMix_dt[,
.(dailyMWh = sum(as.numeric(kWh/1000))), # MWh -> MWh
keyby = .(dv_year, dv_month, dv_date, dv_season, Fuel_Code)]
# annual sum for cross-check
t <- plotDT[, .(sum_TWh = sum(dailyMWh/1000000),
nMonths = uniqueN(dv_month)), keyby = .(Year = dv_year)]
t[, Year := as.factor(Year)]
knitr::kable(t, caption = "Total TWh per year for cross-check - beware partial years")
Year | sum_TWh | nMonths |
---|---|---|
2010 | 41.760175 | 12 |
2011 | 41.392305 | 12 |
2012 | 41.096652 | 12 |
2013 | 40.295334 | 12 |
2014 | 34.629990 | 12 |
2015 | 4.810532 | 12 |
2016 | 19.461585 | 12 |
2017 | 40.737061 | 12 |
2018 | 40.696687 | 12 |
2019 | 41.021118 | 12 |
2020 | 40.617763 | 12 |
2021 | 40.974379 | 12 |
2022 | 40.665250 | 12 |
2023 | 40.593705 | 12 |
2024 | 34.679695 | 10 |
# double check
Figure 5.1 shows individual trends for daily generation. Note that the y scale is adapted to each fuel source for clarity of trends.
p <- ggplot2::ggplot(plotDT, aes(x = dv_date, y = dailyMWh/1000, colour = Fuel_Code)) +
geom_line() +
facet_grid(Fuel_Code ~ ., scales="free_y") +
scale_color_viridis_d(name = "Source") +
labs(x = "Date",
y = "Daily GWh",
caption = rmdParams$plotCap)
p <- fix_date_axis(p)
p
Figure 5.1: Trends in daily GWh generation
ggplot2::ggsave(p,
filename = "dailyNZGenBySource.png",
path = rmdParams$plotPath,
height = 5)
## Saving 7 x 5 in image
Figure 5.2 is interactive (hover mouse).
plotly::ggplotly(p)
Figure 5.2: Trends in daily GWh generation
Figure 5.3 stacks them to give a sense of proportion…
p <- ggplot2::ggplot(plotDT, aes(x = dv_date, y = dailyMWh/1000, fill = Fuel_Code)) +
geom_col(position = "stack") +
scale_fill_viridis_d(name = "Source") +
labs(x = "Date",
y = "Daily GWh",
caption = rmdParams$plotCap)
p <- fix_date_axis(p)
p
Figure 5.3: Trends in daily GWh generation (stacked)
ggplot2::ggsave(p,
filename = "genNZTrendStackBySource.png",
path = rmdParams$plotPath
)
## Saving 7 x 5 in image
Figure 5.4 shows the % daily contribution
plotDT[, pcOfDaily := 100 * dailyMWh/sum(dailyMWh), keyby = .(dv_date)]
p <- ggplot2::ggplot(plotDT, aes(x = dv_date, y = round(pcOfDaily,2), colour = Fuel_Code)) +
geom_line() +
scale_colour_viridis_d(name = "Source") +
labs(x = "Date",
y = "% of total daily GWh",
caption = rmdParams$plotCap)
p <- fix_date_axis(p)
p
Figure 5.4: Trends in % daily contribution
ggplot2::ggsave(p,
filename = "genNZTrendPCBySource.png",
path = rmdParams$plotPath
)
## Saving 7 x 5 in image
Figure 5.5 - interactive version
plotly::ggplotly(p)
Figure 5.5: Interactive version
Figure 5.6 - interactive version
rp <- ggplot2::ggplot(plotDT[dv_date > recentDateCut], aes(x = dv_date, y = round(pcOfDaily,2), colour = Fuel_Code)) +
geom_line() +
scale_colour_viridis_d(name = "Source") +
labs(x = "Date",
y = "% of total daily GWh",
caption = rmdParams$plotCap)
rp <- fix_date_axis(rp)
rp <- rp +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
plotly::ggplotly(rp)
Figure 5.6: Interactive version
Defined how?
Renewable = wind + solar + hydro + geothermal + wood - but note that geothermal is not necessarily low carbon.
nzGenMix_wide_dt[, RENEWABLE := Geo + Hydro + Solar + Wind + Wood]
nzGenMix_wide_dt[, RENEWABLE_perc := 100*RENEWABLE/dv_total]
make_NgesoPlots <- function(dt,
var = "RENEWABLE_perc", # defaults
lowColour = "green",
highColour = "red",
scaleLab = "Change me!",
unit_lab = "??",
minMax = "max"){
res <- list() # for the results
# tile plot ----
res$tile <- ggplot2::ggplot(dt, aes(x = dv_date,
y = dv_hms, fill = get(var))) +
geom_tile() +
theme(legend.position = "bottom") +
scale_x_date(date_labels="%b %Y",date_breaks ="3 month") +
theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
scale_fill_continuous(name = paste0(scaleLab, " (", unit_lab, ")"),
high = highColour,
low = lowColour) +
labs(x = "Date",
y = "Half-hour",
caption = rmdParams$plotCap)
# if(minMax = "max"){
# res$tile <- res$tile +
# scale_fill_continuous(name = paste0("Maximum ", scaleLab)
# )
# }
# if(minMax = "min"){
# res$tile <- res$tile +
# scale_fill_continuous(name = paste0("Half-hourly ", scaleLab)
# )
# }
# line plots ----
plotDT <- dt[,.(max = max(get(var)),
mean = mean(get(var)),
min = min(get(var))
), keyby = .(dv_date)]
#> mean half-hourly ----
yLab <- paste0("Mean half-hourly ", scaleLab, " (", unit_lab, ")")
yh <- max(plotDT$mean)
res$line_mean <- ggplot2::ggplot(plotDT, aes(x = dv_date,
y = mean, colour = mean)) +
theme(legend.position = "bottom") +
scale_x_date(date_labels="%b %Y",date_breaks ="3 month") +
theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
geom_line() +
scale_color_continuous(name = yLab,
high = highColour,
low = lowColour) +
labs(x = "Date",
y = yLab,
caption = rmdParams$plotCap) +
geom_smooth(aes(y = mean), colour = "grey") +
geom_hline(yintercept = yh, colour = highColour) +
annotate("text", x = mean(plotDT$dv_date),
y = yh*1.05,
label = paste0("Maximum value: ", round(yh,1), unit_lab))
#> max half-hourly ----
yLab <- paste0("Maximum half-hourly ", scaleLab, " (", unit_lab, ")")
yh <- max(plotDT$max)
res$line_max <- ggplot2::ggplot(plotDT, aes(x = dv_date, y = max, colour = max)) +
theme(legend.position = "bottom") +
scale_x_date(date_labels="%b %Y",date_breaks ="3 month") +
theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
geom_line() +
scale_color_continuous(name = yLab,
high = highColour,
low = lowColour) +
labs(x = "Date",
y = yLab,
caption = rmdParams$plotCap) +
geom_smooth(aes(y = max), colour = "grey") +
geom_hline(yintercept = yh, colour = highColour) +
annotate("text", x = mean(plotDT$dv_date),
y = yh*1.05,
label = paste0("Historical maximum: ", round(yh,1), unit_lab))
#> min half-hourly ----
yLab <- paste0("Minimum half-hourly ", scaleLab, " (", unit_lab, ")")
yh <- min(plotDT$min)
res$line_min <- ggplot2::ggplot(plotDT, aes(x = dv_date, y = min, colour = min)) +
theme(legend.position = "bottom") +
scale_x_date(date_labels="%b %Y",date_breaks ="3 month") +
theme(axis.text.x = element_text(angle = 60, hjust = 1)) +
geom_line() +
scale_color_continuous(name = yLab,
high = highColour,
low = lowColour) +
labs(x = "Date",
y = yLab,
caption = rmdParams$plotCap) +
geom_smooth(aes(y = min), colour = "grey") +
geom_hline(yintercept = yh, colour = highColour) +
annotate("text", x = mean(plotDT$dv_date),
y = yh*1.05,
label = paste0("Historical minimum: ", round(yh,1), unit_lab)
)
minDateTime <- dt[get(var) == min(plotDT$min), dv_dateTime]
res$minDateReport <- paste0("Minimum: ",
round(plotDT[min == min(plotDT$min), min],1), unit_lab,
" at ", minDateTime)
maxDateTime <- dt[get(var) == max(plotDT$max), dv_dateTime]
res$maxDateReport <- paste0("Maximum: ",
round(plotDT[max == max(plotDT$max), max],1), unit_lab,
" at ", maxDateTime)
return(res)
}
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "RENEWABLE_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Renewable generation",
unit = "% of total",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.1: Half hourly % renewables, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.2: Mean half-hourly % renewables per day, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.3: Maximum half-hourly % renewables per day, all years
results$maxDateReport
## [1] "Maximum: 100% of total at 2015-01-03 06:45:00"
## [2] "Maximum: 100% of total at 2015-01-05 03:15:00"
## [3] "Maximum: 100% of total at 2015-01-05 10:15:00"
## [4] "Maximum: 100% of total at 2015-01-07 22:15:00"
## [5] "Maximum: 100% of total at 2015-01-10 22:15:00"
## [6] "Maximum: 100% of total at 2015-01-12 15:45:00"
## [7] "Maximum: 100% of total at 2015-01-13 19:45:00"
## [8] "Maximum: 100% of total at 2015-01-13 20:45:00"
## [9] "Maximum: 100% of total at 2015-01-14 09:45:00"
## [10] "Maximum: 100% of total at 2015-01-15 08:15:00"
## [11] "Maximum: 100% of total at 2015-01-15 10:45:00"
## [12] "Maximum: 100% of total at 2015-01-15 18:45:00"
## [13] "Maximum: 100% of total at 2015-01-18 08:15:00"
## [14] "Maximum: 100% of total at 2015-01-18 22:45:00"
## [15] "Maximum: 100% of total at 2015-01-20 02:45:00"
## [16] "Maximum: 100% of total at 2015-01-23 11:45:00"
## [17] "Maximum: 100% of total at 2015-01-29 03:45:00"
## [18] "Maximum: 100% of total at 2015-01-29 13:15:00"
## [19] "Maximum: 100% of total at 2015-01-29 13:45:00"
## [20] "Maximum: 100% of total at 2015-01-30 15:45:00"
## [21] "Maximum: 100% of total at 2015-02-01 15:15:00"
## [22] "Maximum: 100% of total at 2015-02-02 10:15:00"
## [23] "Maximum: 100% of total at 2015-02-02 14:15:00"
## [24] "Maximum: 100% of total at 2015-02-06 16:15:00"
## [25] "Maximum: 100% of total at 2015-02-07 01:15:00"
## [26] "Maximum: 100% of total at 2015-02-13 11:45:00"
## [27] "Maximum: 100% of total at 2015-02-14 02:45:00"
## [28] "Maximum: 100% of total at 2015-02-14 21:15:00"
## [29] "Maximum: 100% of total at 2015-02-15 13:45:00"
## [30] "Maximum: 100% of total at 2015-02-15 22:15:00"
## [31] "Maximum: 100% of total at 2015-02-18 00:15:00"
## [32] "Maximum: 100% of total at 2015-02-18 14:45:00"
## [33] "Maximum: 100% of total at 2015-02-19 00:15:00"
## [34] "Maximum: 100% of total at 2015-02-20 00:15:00"
## [35] "Maximum: 100% of total at 2015-02-20 11:15:00"
## [36] "Maximum: 100% of total at 2015-02-20 14:15:00"
## [37] "Maximum: 100% of total at 2015-02-20 15:45:00"
## [38] "Maximum: 100% of total at 2015-02-23 12:15:00"
## [39] "Maximum: 100% of total at 2015-02-24 08:45:00"
## [40] "Maximum: 100% of total at 2015-02-24 09:15:00"
## [41] "Maximum: 100% of total at 2015-02-24 16:15:00"
## [42] "Maximum: 100% of total at 2015-02-24 16:45:00"
## [43] "Maximum: 100% of total at 2015-02-24 18:45:00"
## [44] "Maximum: 100% of total at 2015-02-25 12:45:00"
## [45] "Maximum: 100% of total at 2015-02-25 17:45:00"
## [46] "Maximum: 100% of total at 2015-02-26 19:45:00"
## [47] "Maximum: 100% of total at 2015-02-27 08:15:00"
## [48] "Maximum: 100% of total at 2015-02-27 11:45:00"
## [49] "Maximum: 100% of total at 2015-02-27 23:45:00"
## [50] "Maximum: 100% of total at 2015-03-01 15:15:00"
## [51] "Maximum: 100% of total at 2015-03-02 10:45:00"
## [52] "Maximum: 100% of total at 2015-03-02 13:15:00"
## [53] "Maximum: 100% of total at 2015-03-02 17:45:00"
## [54] "Maximum: 100% of total at 2015-03-02 20:45:00"
## [55] "Maximum: 100% of total at 2015-03-03 12:45:00"
## [56] "Maximum: 100% of total at 2015-03-03 14:15:00"
## [57] "Maximum: 100% of total at 2015-03-04 07:15:00"
## [58] "Maximum: 100% of total at 2015-03-05 09:45:00"
## [59] "Maximum: 100% of total at 2015-03-05 13:45:00"
## [60] "Maximum: 100% of total at 2015-03-05 17:15:00"
## [61] "Maximum: 100% of total at 2015-03-06 01:45:00"
## [62] "Maximum: 100% of total at 2015-03-06 06:45:00"
## [63] "Maximum: 100% of total at 2015-03-11 00:15:00"
## [64] "Maximum: 100% of total at 2015-03-11 08:15:00"
## [65] "Maximum: 100% of total at 2015-03-11 15:15:00"
## [66] "Maximum: 100% of total at 2015-03-12 03:45:00"
## [67] "Maximum: 100% of total at 2015-03-12 08:15:00"
## [68] "Maximum: 100% of total at 2015-03-12 12:15:00"
## [69] "Maximum: 100% of total at 2015-03-12 13:15:00"
## [70] "Maximum: 100% of total at 2015-03-12 16:45:00"
## [71] "Maximum: 100% of total at 2015-03-14 01:45:00"
## [72] "Maximum: 100% of total at 2015-03-16 14:15:00"
## [73] "Maximum: 100% of total at 2015-03-16 18:15:00"
## [74] "Maximum: 100% of total at 2015-03-16 20:15:00"
## [75] "Maximum: 100% of total at 2015-03-16 23:45:00"
## [76] "Maximum: 100% of total at 2015-03-20 09:15:00"
## [77] "Maximum: 100% of total at 2015-03-21 15:45:00"
## [78] "Maximum: 100% of total at 2015-03-22 00:45:00"
## [79] "Maximum: 100% of total at 2015-03-22 04:45:00"
## [80] "Maximum: 100% of total at 2015-03-23 07:45:00"
## [81] "Maximum: 100% of total at 2015-03-23 08:15:00"
## [82] "Maximum: 100% of total at 2015-03-23 09:15:00"
## [83] "Maximum: 100% of total at 2015-03-24 13:45:00"
## [84] "Maximum: 100% of total at 2015-03-25 08:15:00"
## [85] "Maximum: 100% of total at 2015-03-25 11:15:00"
## [86] "Maximum: 100% of total at 2015-03-25 18:15:00"
## [87] "Maximum: 100% of total at 2015-03-27 01:45:00"
## [88] "Maximum: 100% of total at 2015-03-27 07:45:00"
## [89] "Maximum: 100% of total at 2015-03-27 10:15:00"
## [90] "Maximum: 100% of total at 2015-03-27 14:15:00"
## [91] "Maximum: 100% of total at 2015-03-27 14:45:00"
## [92] "Maximum: 100% of total at 2015-03-31 07:15:00"
## [93] "Maximum: 100% of total at 2015-03-31 08:45:00"
## [94] "Maximum: 100% of total at 2015-04-10 05:15:00"
## [95] "Maximum: 100% of total at 2015-04-10 16:45:00"
## [96] "Maximum: 100% of total at 2015-04-11 17:45:00"
## [97] "Maximum: 100% of total at 2015-04-15 11:15:00"
## [98] "Maximum: 100% of total at 2015-04-16 07:15:00"
## [99] "Maximum: 100% of total at 2015-04-16 13:15:00"
## [100] "Maximum: 100% of total at 2015-04-19 22:15:00"
## [101] "Maximum: 100% of total at 2015-04-24 12:15:00"
## [102] "Maximum: 100% of total at 2015-04-25 07:15:00"
## [103] "Maximum: 100% of total at 2015-04-27 05:45:00"
## [104] "Maximum: 100% of total at 2015-04-27 11:45:00"
## [105] "Maximum: 100% of total at 2015-04-29 01:45:00"
## [106] "Maximum: 100% of total at 2015-04-29 18:15:00"
## [107] "Maximum: 100% of total at 2015-04-29 22:45:00"
## [108] "Maximum: 100% of total at 2015-05-03 05:15:00"
## [109] "Maximum: 100% of total at 2015-05-05 18:15:00"
## [110] "Maximum: 100% of total at 2015-05-06 13:45:00"
## [111] "Maximum: 100% of total at 2015-05-06 17:45:00"
## [112] "Maximum: 100% of total at 2015-05-07 11:15:00"
## [113] "Maximum: 100% of total at 2015-05-07 22:15:00"
## [114] "Maximum: 100% of total at 2015-05-09 00:45:00"
## [115] "Maximum: 100% of total at 2015-05-09 14:45:00"
## [116] "Maximum: 100% of total at 2015-05-10 05:15:00"
## [117] "Maximum: 100% of total at 2015-05-11 01:15:00"
## [118] "Maximum: 100% of total at 2015-05-11 15:15:00"
## [119] "Maximum: 100% of total at 2015-05-11 16:15:00"
## [120] "Maximum: 100% of total at 2015-05-11 22:15:00"
## [121] "Maximum: 100% of total at 2015-05-13 00:45:00"
## [122] "Maximum: 100% of total at 2015-05-13 12:45:00"
## [123] "Maximum: 100% of total at 2015-05-13 13:45:00"
## [124] "Maximum: 100% of total at 2015-05-14 23:45:00"
## [125] "Maximum: 100% of total at 2015-05-15 00:45:00"
## [126] "Maximum: 100% of total at 2015-05-16 07:45:00"
## [127] "Maximum: 100% of total at 2015-05-16 09:45:00"
## [128] "Maximum: 100% of total at 2015-05-17 19:45:00"
## [129] "Maximum: 100% of total at 2015-05-21 21:45:00"
## [130] "Maximum: 100% of total at 2015-05-25 02:45:00"
## [131] "Maximum: 100% of total at 2015-05-25 12:45:00"
## [132] "Maximum: 100% of total at 2015-05-26 13:45:00"
## [133] "Maximum: 100% of total at 2015-05-31 21:45:00"
## [134] "Maximum: 100% of total at 2015-06-01 11:45:00"
## [135] "Maximum: 100% of total at 2015-06-02 11:15:00"
## [136] "Maximum: 100% of total at 2015-06-04 04:15:00"
## [137] "Maximum: 100% of total at 2015-06-04 15:45:00"
## [138] "Maximum: 100% of total at 2015-06-05 03:45:00"
## [139] "Maximum: 100% of total at 2015-06-05 13:15:00"
## [140] "Maximum: 100% of total at 2015-06-07 11:15:00"
## [141] "Maximum: 100% of total at 2015-06-08 02:15:00"
## [142] "Maximum: 100% of total at 2015-06-08 04:45:00"
## [143] "Maximum: 100% of total at 2015-06-12 11:15:00"
## [144] "Maximum: 100% of total at 2015-06-13 04:45:00"
## [145] "Maximum: 100% of total at 2015-06-13 05:15:00"
## [146] "Maximum: 100% of total at 2015-06-15 02:45:00"
## [147] "Maximum: 100% of total at 2015-06-15 06:45:00"
## [148] "Maximum: 100% of total at 2015-06-15 09:15:00"
## [149] "Maximum: 100% of total at 2015-06-16 12:45:00"
## [150] "Maximum: 100% of total at 2015-06-16 16:45:00"
## [151] "Maximum: 100% of total at 2015-06-18 00:15:00"
## [152] "Maximum: 100% of total at 2015-06-18 08:45:00"
## [153] "Maximum: 100% of total at 2015-06-22 21:45:00"
## [154] "Maximum: 100% of total at 2015-06-23 13:45:00"
## [155] "Maximum: 100% of total at 2015-06-26 11:15:00"
## [156] "Maximum: 100% of total at 2015-06-30 23:15:00"
## [157] "Maximum: 100% of total at 2015-07-01 07:15:00"
## [158] "Maximum: 100% of total at 2015-07-02 17:15:00"
## [159] "Maximum: 100% of total at 2015-07-02 20:15:00"
## [160] "Maximum: 100% of total at 2015-07-04 10:45:00"
## [161] "Maximum: 100% of total at 2015-07-07 10:45:00"
## [162] "Maximum: 100% of total at 2015-07-07 13:45:00"
## [163] "Maximum: 100% of total at 2015-07-12 09:15:00"
## [164] "Maximum: 100% of total at 2015-07-16 11:45:00"
## [165] "Maximum: 100% of total at 2015-07-16 21:45:00"
## [166] "Maximum: 100% of total at 2015-07-18 09:15:00"
## [167] "Maximum: 100% of total at 2015-07-18 11:45:00"
## [168] "Maximum: 100% of total at 2015-07-19 01:15:00"
## [169] "Maximum: 100% of total at 2015-07-19 09:45:00"
## [170] "Maximum: 100% of total at 2015-07-20 02:15:00"
## [171] "Maximum: 100% of total at 2015-07-20 04:15:00"
## [172] "Maximum: 100% of total at 2015-07-21 03:45:00"
## [173] "Maximum: 100% of total at 2015-07-21 11:45:00"
## [174] "Maximum: 100% of total at 2015-07-22 22:15:00"
## [175] "Maximum: 100% of total at 2015-07-23 11:15:00"
## [176] "Maximum: 100% of total at 2015-07-25 09:15:00"
## [177] "Maximum: 100% of total at 2015-07-25 23:15:00"
## [178] "Maximum: 100% of total at 2015-07-28 08:45:00"
## [179] "Maximum: 100% of total at 2015-07-29 00:15:00"
## [180] "Maximum: 100% of total at 2015-07-31 10:15:00"
## [181] "Maximum: 100% of total at 2015-07-31 11:45:00"
## [182] "Maximum: 100% of total at 2015-07-31 19:45:00"
## [183] "Maximum: 100% of total at 2015-08-03 08:15:00"
## [184] "Maximum: 100% of total at 2015-08-04 03:45:00"
## [185] "Maximum: 100% of total at 2015-08-05 14:45:00"
## [186] "Maximum: 100% of total at 2015-08-08 20:45:00"
## [187] "Maximum: 100% of total at 2015-08-11 14:45:00"
## [188] "Maximum: 100% of total at 2015-08-18 11:15:00"
## [189] "Maximum: 100% of total at 2015-08-21 03:45:00"
## [190] "Maximum: 100% of total at 2015-08-23 16:45:00"
## [191] "Maximum: 100% of total at 2015-08-24 04:15:00"
## [192] "Maximum: 100% of total at 2015-08-25 12:15:00"
## [193] "Maximum: 100% of total at 2015-08-29 11:15:00"
## [194] "Maximum: 100% of total at 2015-08-30 00:45:00"
## [195] "Maximum: 100% of total at 2015-08-31 01:45:00"
## [196] "Maximum: 100% of total at 2015-08-31 10:15:00"
## [197] "Maximum: 100% of total at 2015-08-31 10:45:00"
## [198] "Maximum: 100% of total at 2015-09-02 01:45:00"
## [199] "Maximum: 100% of total at 2015-09-02 22:15:00"
## [200] "Maximum: 100% of total at 2015-09-02 23:45:00"
## [201] "Maximum: 100% of total at 2015-09-03 01:45:00"
## [202] "Maximum: 100% of total at 2015-09-05 12:15:00"
## [203] "Maximum: 100% of total at 2015-09-07 06:15:00"
## [204] "Maximum: 100% of total at 2015-09-08 20:45:00"
## [205] "Maximum: 100% of total at 2015-09-09 12:45:00"
## [206] "Maximum: 100% of total at 2015-09-16 17:15:00"
## [207] "Maximum: 100% of total at 2015-09-17 14:45:00"
## [208] "Maximum: 100% of total at 2015-09-18 16:45:00"
## [209] "Maximum: 100% of total at 2015-09-19 09:45:00"
## [210] "Maximum: 100% of total at 2015-09-19 11:45:00"
## [211] "Maximum: 100% of total at 2015-09-19 19:15:00"
## [212] "Maximum: 100% of total at 2015-09-20 18:15:00"
## [213] "Maximum: 100% of total at 2015-09-21 02:15:00"
## [214] "Maximum: 100% of total at 2015-09-22 06:45:00"
## [215] "Maximum: 100% of total at 2015-09-23 14:15:00"
## [216] "Maximum: 100% of total at 2015-09-23 21:15:00"
## [217] "Maximum: 100% of total at 2015-09-24 03:15:00"
## [218] "Maximum: 100% of total at 2015-09-24 06:15:00"
## [219] "Maximum: 100% of total at 2015-09-24 11:15:00"
## [220] "Maximum: 100% of total at 2015-09-24 14:45:00"
## [221] "Maximum: 100% of total at 2015-09-25 10:15:00"
## [222] "Maximum: 100% of total at 2015-09-25 13:45:00"
## [223] "Maximum: 100% of total at 2015-09-25 14:15:00"
## [224] "Maximum: 100% of total at 2015-09-25 15:15:00"
## [225] "Maximum: 100% of total at 2015-09-25 16:45:00"
## [226] "Maximum: 100% of total at 2015-09-25 20:45:00"
## [227] "Maximum: 100% of total at 2015-10-01 02:45:00"
## [228] "Maximum: 100% of total at 2015-10-01 14:45:00"
## [229] "Maximum: 100% of total at 2015-10-01 16:45:00"
## [230] "Maximum: 100% of total at 2015-10-01 18:15:00"
## [231] "Maximum: 100% of total at 2015-10-01 18:45:00"
## [232] "Maximum: 100% of total at 2015-10-01 19:15:00"
## [233] "Maximum: 100% of total at 2015-10-01 21:45:00"
## [234] "Maximum: 100% of total at 2015-10-02 03:45:00"
## [235] "Maximum: 100% of total at 2015-10-02 08:45:00"
## [236] "Maximum: 100% of total at 2015-10-02 19:45:00"
## [237] "Maximum: 100% of total at 2015-10-02 23:15:00"
## [238] "Maximum: 100% of total at 2015-10-03 05:15:00"
## [239] "Maximum: 100% of total at 2015-10-03 07:15:00"
## [240] "Maximum: 100% of total at 2015-10-04 04:15:00"
## [241] "Maximum: 100% of total at 2015-10-04 08:15:00"
## [242] "Maximum: 100% of total at 2015-10-05 01:15:00"
## [243] "Maximum: 100% of total at 2015-10-05 10:45:00"
## [244] "Maximum: 100% of total at 2015-10-05 16:15:00"
## [245] "Maximum: 100% of total at 2015-10-06 01:45:00"
## [246] "Maximum: 100% of total at 2015-10-07 05:45:00"
## [247] "Maximum: 100% of total at 2015-10-07 11:15:00"
## [248] "Maximum: 100% of total at 2015-10-08 01:15:00"
## [249] "Maximum: 100% of total at 2015-10-08 09:15:00"
## [250] "Maximum: 100% of total at 2015-10-08 09:45:00"
## [251] "Maximum: 100% of total at 2015-10-08 18:15:00"
## [252] "Maximum: 100% of total at 2015-10-08 20:15:00"
## [253] "Maximum: 100% of total at 2015-10-09 10:45:00"
## [254] "Maximum: 100% of total at 2015-10-09 20:45:00"
## [255] "Maximum: 100% of total at 2015-10-13 07:45:00"
## [256] "Maximum: 100% of total at 2015-10-13 21:15:00"
## [257] "Maximum: 100% of total at 2015-10-14 06:45:00"
## [258] "Maximum: 100% of total at 2015-10-14 08:45:00"
## [259] "Maximum: 100% of total at 2015-10-14 17:15:00"
## [260] "Maximum: 100% of total at 2015-10-16 02:45:00"
## [261] "Maximum: 100% of total at 2015-10-19 14:15:00"
## [262] "Maximum: 100% of total at 2015-10-19 15:15:00"
## [263] "Maximum: 100% of total at 2015-10-23 01:45:00"
## [264] "Maximum: 100% of total at 2015-10-24 06:45:00"
## [265] "Maximum: 100% of total at 2015-10-25 22:45:00"
## [266] "Maximum: 100% of total at 2015-11-01 14:15:00"
## [267] "Maximum: 100% of total at 2015-11-01 21:15:00"
## [268] "Maximum: 100% of total at 2015-11-04 08:45:00"
## [269] "Maximum: 100% of total at 2015-11-05 12:15:00"
## [270] "Maximum: 100% of total at 2015-11-06 21:45:00"
## [271] "Maximum: 100% of total at 2015-11-07 02:15:00"
## [272] "Maximum: 100% of total at 2015-11-07 03:15:00"
## [273] "Maximum: 100% of total at 2015-11-09 10:15:00"
## [274] "Maximum: 100% of total at 2015-11-10 02:15:00"
## [275] "Maximum: 100% of total at 2015-11-10 11:15:00"
## [276] "Maximum: 100% of total at 2015-11-11 14:45:00"
## [277] "Maximum: 100% of total at 2015-11-12 12:45:00"
## [278] "Maximum: 100% of total at 2015-11-13 00:15:00"
## [279] "Maximum: 100% of total at 2015-11-13 01:45:00"
## [280] "Maximum: 100% of total at 2015-11-13 04:45:00"
## [281] "Maximum: 100% of total at 2015-11-13 10:15:00"
## [282] "Maximum: 100% of total at 2015-11-13 11:45:00"
## [283] "Maximum: 100% of total at 2015-11-14 01:15:00"
## [284] "Maximum: 100% of total at 2015-11-14 02:45:00"
## [285] "Maximum: 100% of total at 2015-11-14 03:15:00"
## [286] "Maximum: 100% of total at 2015-11-14 15:45:00"
## [287] "Maximum: 100% of total at 2015-11-15 10:15:00"
## [288] "Maximum: 100% of total at 2015-11-15 11:15:00"
## [289] "Maximum: 100% of total at 2015-11-15 16:45:00"
## [290] "Maximum: 100% of total at 2015-11-15 17:15:00"
## [291] "Maximum: 100% of total at 2015-11-15 23:45:00"
## [292] "Maximum: 100% of total at 2015-11-16 01:15:00"
## [293] "Maximum: 100% of total at 2015-11-16 16:45:00"
## [294] "Maximum: 100% of total at 2015-11-16 18:15:00"
## [295] "Maximum: 100% of total at 2015-11-16 23:45:00"
## [296] "Maximum: 100% of total at 2015-11-17 07:15:00"
## [297] "Maximum: 100% of total at 2015-11-17 08:45:00"
## [298] "Maximum: 100% of total at 2015-11-17 11:15:00"
## [299] "Maximum: 100% of total at 2015-11-17 12:45:00"
## [300] "Maximum: 100% of total at 2015-11-17 22:45:00"
## [301] "Maximum: 100% of total at 2015-11-18 05:45:00"
## [302] "Maximum: 100% of total at 2015-11-18 09:15:00"
## [303] "Maximum: 100% of total at 2015-11-19 00:45:00"
## [304] "Maximum: 100% of total at 2015-11-19 08:45:00"
## [305] "Maximum: 100% of total at 2015-11-19 18:15:00"
## [306] "Maximum: 100% of total at 2015-11-25 07:45:00"
## [307] "Maximum: 100% of total at 2015-11-30 08:45:00"
## [308] "Maximum: 100% of total at 2015-11-30 09:45:00"
## [309] "Maximum: 100% of total at 2015-11-30 17:45:00"
## [310] "Maximum: 100% of total at 2015-12-02 09:45:00"
## [311] "Maximum: 100% of total at 2015-12-06 17:45:00"
## [312] "Maximum: 100% of total at 2015-12-07 03:15:00"
## [313] "Maximum: 100% of total at 2015-12-09 01:15:00"
## [314] "Maximum: 100% of total at 2015-12-09 05:45:00"
## [315] "Maximum: 100% of total at 2015-12-09 08:45:00"
## [316] "Maximum: 100% of total at 2015-12-11 21:45:00"
## [317] "Maximum: 100% of total at 2015-12-17 19:15:00"
## [318] "Maximum: 100% of total at 2015-12-18 22:45:00"
## [319] "Maximum: 100% of total at 2015-12-19 16:15:00"
## [320] "Maximum: 100% of total at 2015-12-19 20:45:00"
## [321] "Maximum: 100% of total at 2015-12-19 22:15:00"
## [322] "Maximum: 100% of total at 2015-12-20 03:15:00"
## [323] "Maximum: 100% of total at 2015-12-20 22:15:00"
## [324] "Maximum: 100% of total at 2015-12-21 08:15:00"
## [325] "Maximum: 100% of total at 2015-12-21 10:15:00"
## [326] "Maximum: 100% of total at 2015-12-25 05:15:00"
## [327] "Maximum: 100% of total at 2015-12-25 15:15:00"
## [328] "Maximum: 100% of total at 2015-12-25 22:45:00"
## [329] "Maximum: 100% of total at 2015-12-26 05:15:00"
## [330] "Maximum: 100% of total at 2015-12-27 01:15:00"
## [331] "Maximum: 100% of total at 2015-12-29 08:15:00"
## [332] "Maximum: 100% of total at 2015-12-29 13:45:00"
## [333] "Maximum: 100% of total at 2015-12-30 18:45:00"
## [334] "Maximum: 100% of total at 2016-01-04 14:45:00"
## [335] "Maximum: 100% of total at 2016-01-05 01:45:00"
## [336] "Maximum: 100% of total at 2016-01-06 12:45:00"
## [337] "Maximum: 100% of total at 2016-01-06 16:15:00"
## [338] "Maximum: 100% of total at 2016-01-06 22:45:00"
## [339] "Maximum: 100% of total at 2016-01-08 00:15:00"
## [340] "Maximum: 100% of total at 2016-01-08 09:15:00"
## [341] "Maximum: 100% of total at 2016-01-08 10:45:00"
## [342] "Maximum: 100% of total at 2016-01-11 14:45:00"
## [343] "Maximum: 100% of total at 2016-01-11 15:15:00"
## [344] "Maximum: 100% of total at 2016-01-11 18:15:00"
## [345] "Maximum: 100% of total at 2016-01-11 19:15:00"
## [346] "Maximum: 100% of total at 2016-01-11 23:15:00"
## [347] "Maximum: 100% of total at 2016-01-12 03:15:00"
## [348] "Maximum: 100% of total at 2016-01-14 13:45:00"
## [349] "Maximum: 100% of total at 2016-01-17 12:45:00"
## [350] "Maximum: 100% of total at 2016-01-19 04:15:00"
## [351] "Maximum: 100% of total at 2016-01-19 17:45:00"
## [352] "Maximum: 100% of total at 2016-01-19 20:15:00"
## [353] "Maximum: 100% of total at 2016-01-20 04:15:00"
## [354] "Maximum: 100% of total at 2016-01-20 09:15:00"
## [355] "Maximum: 100% of total at 2016-01-20 10:45:00"
## [356] "Maximum: 100% of total at 2016-01-20 22:45:00"
## [357] "Maximum: 100% of total at 2016-01-21 05:15:00"
## [358] "Maximum: 100% of total at 2016-01-21 14:45:00"
## [359] "Maximum: 100% of total at 2016-01-21 20:45:00"
## [360] "Maximum: 100% of total at 2016-01-23 02:45:00"
## [361] "Maximum: 100% of total at 2016-01-23 08:15:00"
## [362] "Maximum: 100% of total at 2016-01-23 08:45:00"
## [363] "Maximum: 100% of total at 2016-01-23 09:15:00"
## [364] "Maximum: 100% of total at 2016-01-23 10:45:00"
## [365] "Maximum: 100% of total at 2016-01-24 03:45:00"
## [366] "Maximum: 100% of total at 2016-01-24 12:15:00"
## [367] "Maximum: 100% of total at 2016-01-24 15:15:00"
## [368] "Maximum: 100% of total at 2016-01-24 22:15:00"
## [369] "Maximum: 100% of total at 2016-01-25 21:15:00"
## [370] "Maximum: 100% of total at 2016-01-26 10:45:00"
## [371] "Maximum: 100% of total at 2016-01-26 21:15:00"
## [372] "Maximum: 100% of total at 2016-01-26 21:45:00"
## [373] "Maximum: 100% of total at 2016-01-27 05:15:00"
## [374] "Maximum: 100% of total at 2016-01-27 10:45:00"
## [375] "Maximum: 100% of total at 2016-02-01 03:15:00"
## [376] "Maximum: 100% of total at 2016-02-01 04:15:00"
## [377] "Maximum: 100% of total at 2016-02-01 04:45:00"
## [378] "Maximum: 100% of total at 2016-02-02 02:45:00"
## [379] "Maximum: 100% of total at 2016-02-02 12:15:00"
## [380] "Maximum: 100% of total at 2016-02-02 15:45:00"
## [381] "Maximum: 100% of total at 2016-02-03 07:15:00"
## [382] "Maximum: 100% of total at 2016-02-03 11:15:00"
## [383] "Maximum: 100% of total at 2016-02-03 13:15:00"
## [384] "Maximum: 100% of total at 2016-02-04 13:15:00"
## [385] "Maximum: 100% of total at 2016-02-04 14:45:00"
## [386] "Maximum: 100% of total at 2016-02-04 15:45:00"
## [387] "Maximum: 100% of total at 2016-02-04 16:45:00"
## [388] "Maximum: 100% of total at 2016-02-05 01:45:00"
## [389] "Maximum: 100% of total at 2016-02-05 11:15:00"
## [390] "Maximum: 100% of total at 2016-02-05 13:45:00"
## [391] "Maximum: 100% of total at 2016-02-05 14:45:00"
## [392] "Maximum: 100% of total at 2016-02-09 10:45:00"
## [393] "Maximum: 100% of total at 2016-02-09 12:15:00"
## [394] "Maximum: 100% of total at 2016-02-10 10:45:00"
## [395] "Maximum: 100% of total at 2016-02-10 19:45:00"
## [396] "Maximum: 100% of total at 2016-02-10 20:45:00"
## [397] "Maximum: 100% of total at 2016-02-11 20:45:00"
## [398] "Maximum: 100% of total at 2016-02-15 09:15:00"
## [399] "Maximum: 100% of total at 2016-02-15 10:15:00"
## [400] "Maximum: 100% of total at 2016-02-15 12:45:00"
## [401] "Maximum: 100% of total at 2016-02-15 13:15:00"
## [402] "Maximum: 100% of total at 2016-02-15 14:45:00"
## [403] "Maximum: 100% of total at 2016-02-16 12:15:00"
## [404] "Maximum: 100% of total at 2016-02-16 15:45:00"
## [405] "Maximum: 100% of total at 2016-02-17 09:15:00"
## [406] "Maximum: 100% of total at 2016-02-17 16:15:00"
## [407] "Maximum: 100% of total at 2016-02-17 17:45:00"
## [408] "Maximum: 100% of total at 2016-02-18 02:15:00"
## [409] "Maximum: 100% of total at 2016-02-23 03:15:00"
## [410] "Maximum: 100% of total at 2016-02-23 03:45:00"
## [411] "Maximum: 100% of total at 2016-02-24 05:45:00"
## [412] "Maximum: 100% of total at 2016-02-28 21:45:00"
## [413] "Maximum: 100% of total at 2016-02-28 23:15:00"
## [414] "Maximum: 100% of total at 2016-04-01 22:15:00"
## [415] "Maximum: 100% of total at 2016-04-03 08:45:00"
## [416] "Maximum: 100% of total at 2016-04-03 13:45:00"
## [417] "Maximum: 100% of total at 2016-04-03 14:15:00"
## [418] "Maximum: 100% of total at 2016-04-03 22:15:00"
## [419] "Maximum: 100% of total at 2016-04-05 02:15:00"
## [420] "Maximum: 100% of total at 2016-04-05 11:15:00"
## [421] "Maximum: 100% of total at 2016-04-05 18:45:00"
## [422] "Maximum: 100% of total at 2016-04-06 01:45:00"
## [423] "Maximum: 100% of total at 2016-04-06 02:15:00"
## [424] "Maximum: 100% of total at 2016-04-06 18:45:00"
## [425] "Maximum: 100% of total at 2016-04-07 00:45:00"
## [426] "Maximum: 100% of total at 2016-04-07 02:45:00"
## [427] "Maximum: 100% of total at 2016-04-07 05:45:00"
## [428] "Maximum: 100% of total at 2016-04-08 20:45:00"
## [429] "Maximum: 100% of total at 2016-04-12 07:45:00"
## [430] "Maximum: 100% of total at 2016-04-12 22:15:00"
## [431] "Maximum: 100% of total at 2016-04-12 22:45:00"
## [432] "Maximum: 100% of total at 2016-04-13 04:45:00"
## [433] "Maximum: 100% of total at 2016-04-13 06:15:00"
## [434] "Maximum: 100% of total at 2016-04-13 10:15:00"
## [435] "Maximum: 100% of total at 2016-04-13 11:45:00"
## [436] "Maximum: 100% of total at 2016-04-13 17:45:00"
## [437] "Maximum: 100% of total at 2016-04-13 20:45:00"
## [438] "Maximum: 100% of total at 2016-04-16 12:15:00"
## [439] "Maximum: 100% of total at 2016-04-20 01:15:00"
## [440] "Maximum: 100% of total at 2016-04-21 07:15:00"
## [441] "Maximum: 100% of total at 2016-04-29 00:45:00"
## [442] "Maximum: 100% of total at 2016-04-29 20:15:00"
## [443] "Maximum: 100% of total at 2016-04-30 13:15:00"
## [444] "Maximum: 100% of total at 2016-05-01 07:45:00"
## [445] "Maximum: 100% of total at 2016-05-02 17:45:00"
## [446] "Maximum: 100% of total at 2016-05-03 05:15:00"
## [447] "Maximum: 100% of total at 2016-05-03 06:45:00"
## [448] "Maximum: 100% of total at 2016-05-04 04:45:00"
## [449] "Maximum: 100% of total at 2016-05-04 19:15:00"
## [450] "Maximum: 100% of total at 2016-05-04 21:45:00"
## [451] "Maximum: 100% of total at 2016-05-05 18:15:00"
## [452] "Maximum: 100% of total at 2016-05-06 03:15:00"
## [453] "Maximum: 100% of total at 2016-05-06 06:15:00"
## [454] "Maximum: 100% of total at 2016-05-06 13:15:00"
## [455] "Maximum: 100% of total at 2016-05-07 19:15:00"
## [456] "Maximum: 100% of total at 2016-05-08 06:15:00"
## [457] "Maximum: 100% of total at 2016-05-08 18:15:00"
## [458] "Maximum: 100% of total at 2016-05-08 21:15:00"
## [459] "Maximum: 100% of total at 2016-05-09 01:15:00"
## [460] "Maximum: 100% of total at 2016-05-09 14:15:00"
## [461] "Maximum: 100% of total at 2016-05-09 14:45:00"
## [462] "Maximum: 100% of total at 2016-05-09 16:45:00"
## [463] "Maximum: 100% of total at 2016-05-09 17:15:00"
## [464] "Maximum: 100% of total at 2016-05-09 19:45:00"
## [465] "Maximum: 100% of total at 2016-05-10 01:45:00"
## [466] "Maximum: 100% of total at 2016-05-11 00:15:00"
## [467] "Maximum: 100% of total at 2016-05-11 09:45:00"
## [468] "Maximum: 100% of total at 2016-05-11 12:15:00"
## [469] "Maximum: 100% of total at 2016-05-11 16:15:00"
## [470] "Maximum: 100% of total at 2016-05-11 22:45:00"
## [471] "Maximum: 100% of total at 2016-05-12 19:45:00"
## [472] "Maximum: 100% of total at 2016-05-12 20:15:00"
## [473] "Maximum: 100% of total at 2016-05-12 23:15:00"
## [474] "Maximum: 100% of total at 2016-05-12 23:45:00"
## [475] "Maximum: 100% of total at 2016-05-13 01:15:00"
## [476] "Maximum: 100% of total at 2016-05-13 01:45:00"
## [477] "Maximum: 100% of total at 2016-05-13 07:45:00"
## [478] "Maximum: 100% of total at 2016-05-13 08:45:00"
## [479] "Maximum: 100% of total at 2016-05-13 21:45:00"
## [480] "Maximum: 100% of total at 2016-05-14 11:15:00"
## [481] "Maximum: 100% of total at 2016-05-14 19:45:00"
## [482] "Maximum: 100% of total at 2016-05-15 03:15:00"
## [483] "Maximum: 100% of total at 2016-05-15 07:45:00"
## [484] "Maximum: 100% of total at 2016-05-15 10:15:00"
## [485] "Maximum: 100% of total at 2016-05-15 14:15:00"
## [486] "Maximum: 100% of total at 2016-05-15 16:15:00"
## [487] "Maximum: 100% of total at 2016-05-15 16:45:00"
## [488] "Maximum: 100% of total at 2016-05-15 19:45:00"
## [489] "Maximum: 100% of total at 2016-05-15 22:45:00"
## [490] "Maximum: 100% of total at 2016-05-16 09:45:00"
## [491] "Maximum: 100% of total at 2016-05-16 12:45:00"
## [492] "Maximum: 100% of total at 2016-05-16 20:15:00"
## [493] "Maximum: 100% of total at 2016-05-16 20:45:00"
## [494] "Maximum: 100% of total at 2016-05-19 04:45:00"
## [495] "Maximum: 100% of total at 2016-05-25 03:45:00"
## [496] "Maximum: 100% of total at 2016-05-29 15:45:00"
## [497] "Maximum: 100% of total at 2016-05-31 03:15:00"
## [498] "Maximum: 100% of total at 2016-05-31 13:45:00"
## [499] "Maximum: 100% of total at 2016-06-01 11:15:00"
## [500] "Maximum: 100% of total at 2016-06-02 06:45:00"
## [501] "Maximum: 100% of total at 2016-06-03 11:45:00"
## [502] "Maximum: 100% of total at 2016-06-03 15:45:00"
## [503] "Maximum: 100% of total at 2016-06-05 19:45:00"
## [504] "Maximum: 100% of total at 2016-06-07 02:45:00"
## [505] "Maximum: 100% of total at 2016-06-09 17:15:00"
## [506] "Maximum: 100% of total at 2016-06-09 18:45:00"
## [507] "Maximum: 100% of total at 2016-06-13 02:45:00"
## [508] "Maximum: 100% of total at 2016-06-14 03:15:00"
## [509] "Maximum: 100% of total at 2016-06-15 10:15:00"
## [510] "Maximum: 100% of total at 2016-06-18 05:45:00"
## [511] "Maximum: 100% of total at 2016-06-20 20:45:00"
## [512] "Maximum: 100% of total at 2016-06-21 12:15:00"
## [513] "Maximum: 100% of total at 2016-06-21 13:45:00"
## [514] "Maximum: 100% of total at 2016-06-22 20:45:00"
## [515] "Maximum: 100% of total at 2016-06-24 04:15:00"
## [516] "Maximum: 100% of total at 2016-07-10 20:15:00"
## [517] "Maximum: 100% of total at 2016-07-12 05:15:00"
## [518] "Maximum: 100% of total at 2016-07-20 15:15:00"
## [519] "Maximum: 100% of total at 2016-07-21 14:15:00"
## [520] "Maximum: 100% of total at 2016-07-23 16:15:00"
## [521] "Maximum: 100% of total at 2016-07-27 01:15:00"
## [522] "Maximum: 100% of total at 2016-07-27 10:15:00"
## [523] "Maximum: 100% of total at 2016-07-27 10:45:00"
## [524] "Maximum: 100% of total at 2016-07-29 00:15:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.4: Minimum % renewables, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "RENEWABLE_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Renewable generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.5: % renewables, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.6: Mean % renewables, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.7: Maximum % renewables, last 6 months
results$maxDateReport
## [1] "Maximum: 99.6% of total at 2024-09-20 03:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.8: Minimum % renewables, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, WIND_perc := 100*Wind/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "WIND_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Wind generation",
unit = "% of total",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.9: % wind, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.10: Mean % wind per day, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.11: Maximum % wind, all years
results$maxDateReport
## [1] "Maximum: 61.1% of total at 2015-12-06 03:15:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.12: Minimum % wind, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "WIND_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Wind generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.13: % wind, last 6 months
Figure 6.14 shows the mean half-hourly % of wind generation per day.
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.14: Mean % wind, last 6 months
results$maxDateReport
## [1] "Maximum: 27.1% of total at 2024-09-27 01:45:00"
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.15: Maximum % wind, last 6 months
results$maxDateReport
## [1] "Maximum: 27.1% of total at 2024-09-27 01:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.16: Minimum % wind, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, SOLAR_perc := 100*Solar/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "SOLAR_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Solar generation",
unit = "%",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.17: % solar, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.18: Mean % solar, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.19: Maximum % solar, all years
results$maxDateReport
## [1] "Maximum: 1.2% at 2024-10-27 13:45:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
## Warning: Failed to fit group -1.
## Caused by error in `gam.reparam()`:
## ! NA/NaN/Inf in foreign function call (arg 3)
Figure 6.20: Minimum % solar, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "SOLAR_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Solar generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.21: % solar, last 6 months
Figure 6.22 shows the mean daily % of generation which is (grid) solar.
results$line_mean+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.22: Mean % solar, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.23: Maximum % solar, last 6 months
results$maxDateReport
## [1] "Maximum: 1.2% of total at 2024-10-27 13:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.24: Minimum % solar, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, HYDRO_perc := 100*Hydro/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "HYDRO_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Hydro generation",
unit = "% of total",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.25: % solar, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.26: Mean % hydro, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.27: Maximum % hydro, all years
results$maxDateReport
## [1] "Maximum: 100% of total at 2015-01-03 06:45:00"
## [2] "Maximum: 100% of total at 2015-01-05 03:15:00"
## [3] "Maximum: 100% of total at 2015-01-05 10:15:00"
## [4] "Maximum: 100% of total at 2015-01-07 22:15:00"
## [5] "Maximum: 100% of total at 2015-01-10 22:15:00"
## [6] "Maximum: 100% of total at 2015-01-12 15:45:00"
## [7] "Maximum: 100% of total at 2015-01-13 19:45:00"
## [8] "Maximum: 100% of total at 2015-01-13 20:45:00"
## [9] "Maximum: 100% of total at 2015-01-14 09:45:00"
## [10] "Maximum: 100% of total at 2015-01-15 08:15:00"
## [11] "Maximum: 100% of total at 2015-01-15 10:45:00"
## [12] "Maximum: 100% of total at 2015-01-15 18:45:00"
## [13] "Maximum: 100% of total at 2015-01-18 08:15:00"
## [14] "Maximum: 100% of total at 2015-01-18 22:45:00"
## [15] "Maximum: 100% of total at 2015-01-20 02:45:00"
## [16] "Maximum: 100% of total at 2015-01-23 11:45:00"
## [17] "Maximum: 100% of total at 2015-01-29 03:45:00"
## [18] "Maximum: 100% of total at 2015-01-29 13:15:00"
## [19] "Maximum: 100% of total at 2015-01-29 13:45:00"
## [20] "Maximum: 100% of total at 2015-01-30 15:45:00"
## [21] "Maximum: 100% of total at 2015-04-10 05:15:00"
## [22] "Maximum: 100% of total at 2015-04-10 16:45:00"
## [23] "Maximum: 100% of total at 2015-04-11 17:45:00"
## [24] "Maximum: 100% of total at 2015-04-15 11:15:00"
## [25] "Maximum: 100% of total at 2015-04-16 07:15:00"
## [26] "Maximum: 100% of total at 2015-04-16 13:15:00"
## [27] "Maximum: 100% of total at 2015-04-19 22:15:00"
## [28] "Maximum: 100% of total at 2015-04-24 12:15:00"
## [29] "Maximum: 100% of total at 2015-04-25 07:15:00"
## [30] "Maximum: 100% of total at 2015-04-27 05:45:00"
## [31] "Maximum: 100% of total at 2015-04-27 11:45:00"
## [32] "Maximum: 100% of total at 2015-04-29 01:45:00"
## [33] "Maximum: 100% of total at 2015-04-29 18:15:00"
## [34] "Maximum: 100% of total at 2015-04-29 22:45:00"
## [35] "Maximum: 100% of total at 2015-05-03 05:15:00"
## [36] "Maximum: 100% of total at 2015-05-05 18:15:00"
## [37] "Maximum: 100% of total at 2015-05-06 13:45:00"
## [38] "Maximum: 100% of total at 2015-05-06 17:45:00"
## [39] "Maximum: 100% of total at 2015-05-07 11:15:00"
## [40] "Maximum: 100% of total at 2015-05-07 22:15:00"
## [41] "Maximum: 100% of total at 2015-05-09 00:45:00"
## [42] "Maximum: 100% of total at 2015-05-09 14:45:00"
## [43] "Maximum: 100% of total at 2015-05-10 05:15:00"
## [44] "Maximum: 100% of total at 2015-05-11 01:15:00"
## [45] "Maximum: 100% of total at 2015-05-11 15:15:00"
## [46] "Maximum: 100% of total at 2015-05-11 16:15:00"
## [47] "Maximum: 100% of total at 2015-05-11 22:15:00"
## [48] "Maximum: 100% of total at 2015-05-13 00:45:00"
## [49] "Maximum: 100% of total at 2015-05-13 12:45:00"
## [50] "Maximum: 100% of total at 2015-05-13 13:45:00"
## [51] "Maximum: 100% of total at 2015-05-14 23:45:00"
## [52] "Maximum: 100% of total at 2015-05-15 00:45:00"
## [53] "Maximum: 100% of total at 2015-05-16 07:45:00"
## [54] "Maximum: 100% of total at 2015-05-16 09:45:00"
## [55] "Maximum: 100% of total at 2015-05-17 19:45:00"
## [56] "Maximum: 100% of total at 2015-05-21 21:45:00"
## [57] "Maximum: 100% of total at 2015-05-25 02:45:00"
## [58] "Maximum: 100% of total at 2015-05-25 12:45:00"
## [59] "Maximum: 100% of total at 2015-05-26 13:45:00"
## [60] "Maximum: 100% of total at 2015-05-31 21:45:00"
## [61] "Maximum: 100% of total at 2015-06-01 11:45:00"
## [62] "Maximum: 100% of total at 2015-06-02 11:15:00"
## [63] "Maximum: 100% of total at 2015-06-04 04:15:00"
## [64] "Maximum: 100% of total at 2015-06-04 15:45:00"
## [65] "Maximum: 100% of total at 2015-06-05 03:45:00"
## [66] "Maximum: 100% of total at 2015-06-05 13:15:00"
## [67] "Maximum: 100% of total at 2015-06-07 11:15:00"
## [68] "Maximum: 100% of total at 2015-06-08 02:15:00"
## [69] "Maximum: 100% of total at 2015-06-08 04:45:00"
## [70] "Maximum: 100% of total at 2015-06-12 11:15:00"
## [71] "Maximum: 100% of total at 2015-06-13 04:45:00"
## [72] "Maximum: 100% of total at 2015-06-13 05:15:00"
## [73] "Maximum: 100% of total at 2015-06-15 02:45:00"
## [74] "Maximum: 100% of total at 2015-06-15 06:45:00"
## [75] "Maximum: 100% of total at 2015-06-15 09:15:00"
## [76] "Maximum: 100% of total at 2015-06-16 12:45:00"
## [77] "Maximum: 100% of total at 2015-06-16 16:45:00"
## [78] "Maximum: 100% of total at 2015-06-18 00:15:00"
## [79] "Maximum: 100% of total at 2015-06-18 08:45:00"
## [80] "Maximum: 100% of total at 2015-06-22 21:45:00"
## [81] "Maximum: 100% of total at 2015-06-23 13:45:00"
## [82] "Maximum: 100% of total at 2015-06-26 11:15:00"
## [83] "Maximum: 100% of total at 2015-06-30 23:15:00"
## [84] "Maximum: 100% of total at 2015-07-01 07:15:00"
## [85] "Maximum: 100% of total at 2015-07-02 17:15:00"
## [86] "Maximum: 100% of total at 2015-07-02 20:15:00"
## [87] "Maximum: 100% of total at 2015-07-04 10:45:00"
## [88] "Maximum: 100% of total at 2015-07-07 10:45:00"
## [89] "Maximum: 100% of total at 2015-07-07 13:45:00"
## [90] "Maximum: 100% of total at 2015-07-12 09:15:00"
## [91] "Maximum: 100% of total at 2015-07-16 11:45:00"
## [92] "Maximum: 100% of total at 2015-07-16 21:45:00"
## [93] "Maximum: 100% of total at 2015-07-18 09:15:00"
## [94] "Maximum: 100% of total at 2015-07-18 11:45:00"
## [95] "Maximum: 100% of total at 2015-07-19 01:15:00"
## [96] "Maximum: 100% of total at 2015-07-19 09:45:00"
## [97] "Maximum: 100% of total at 2015-07-20 02:15:00"
## [98] "Maximum: 100% of total at 2015-07-20 04:15:00"
## [99] "Maximum: 100% of total at 2015-07-21 03:45:00"
## [100] "Maximum: 100% of total at 2015-07-21 11:45:00"
## [101] "Maximum: 100% of total at 2015-07-22 22:15:00"
## [102] "Maximum: 100% of total at 2015-07-23 11:15:00"
## [103] "Maximum: 100% of total at 2015-07-25 09:15:00"
## [104] "Maximum: 100% of total at 2015-07-25 23:15:00"
## [105] "Maximum: 100% of total at 2015-07-28 08:45:00"
## [106] "Maximum: 100% of total at 2015-07-29 00:15:00"
## [107] "Maximum: 100% of total at 2015-07-31 10:15:00"
## [108] "Maximum: 100% of total at 2015-07-31 11:45:00"
## [109] "Maximum: 100% of total at 2015-07-31 19:45:00"
## [110] "Maximum: 100% of total at 2015-08-03 08:15:00"
## [111] "Maximum: 100% of total at 2015-08-04 03:45:00"
## [112] "Maximum: 100% of total at 2015-08-05 14:45:00"
## [113] "Maximum: 100% of total at 2015-08-08 20:45:00"
## [114] "Maximum: 100% of total at 2015-08-11 14:45:00"
## [115] "Maximum: 100% of total at 2015-08-18 11:15:00"
## [116] "Maximum: 100% of total at 2015-08-21 03:45:00"
## [117] "Maximum: 100% of total at 2015-08-23 16:45:00"
## [118] "Maximum: 100% of total at 2015-08-24 04:15:00"
## [119] "Maximum: 100% of total at 2015-08-25 12:15:00"
## [120] "Maximum: 100% of total at 2015-08-29 11:15:00"
## [121] "Maximum: 100% of total at 2015-08-30 00:45:00"
## [122] "Maximum: 100% of total at 2015-08-31 01:45:00"
## [123] "Maximum: 100% of total at 2015-08-31 10:15:00"
## [124] "Maximum: 100% of total at 2015-08-31 10:45:00"
## [125] "Maximum: 100% of total at 2015-09-02 01:45:00"
## [126] "Maximum: 100% of total at 2015-09-02 22:15:00"
## [127] "Maximum: 100% of total at 2015-09-02 23:45:00"
## [128] "Maximum: 100% of total at 2015-09-03 01:45:00"
## [129] "Maximum: 100% of total at 2015-09-05 12:15:00"
## [130] "Maximum: 100% of total at 2015-09-07 06:15:00"
## [131] "Maximum: 100% of total at 2015-09-08 20:45:00"
## [132] "Maximum: 100% of total at 2015-09-09 12:45:00"
## [133] "Maximum: 100% of total at 2015-09-16 17:15:00"
## [134] "Maximum: 100% of total at 2015-09-17 14:45:00"
## [135] "Maximum: 100% of total at 2015-09-18 16:45:00"
## [136] "Maximum: 100% of total at 2015-09-19 09:45:00"
## [137] "Maximum: 100% of total at 2015-09-19 11:45:00"
## [138] "Maximum: 100% of total at 2015-09-19 19:15:00"
## [139] "Maximum: 100% of total at 2015-09-20 18:15:00"
## [140] "Maximum: 100% of total at 2015-09-21 02:15:00"
## [141] "Maximum: 100% of total at 2015-09-22 06:45:00"
## [142] "Maximum: 100% of total at 2015-09-23 14:15:00"
## [143] "Maximum: 100% of total at 2015-09-23 21:15:00"
## [144] "Maximum: 100% of total at 2015-09-24 03:15:00"
## [145] "Maximum: 100% of total at 2015-09-24 06:15:00"
## [146] "Maximum: 100% of total at 2015-09-24 11:15:00"
## [147] "Maximum: 100% of total at 2015-09-24 14:45:00"
## [148] "Maximum: 100% of total at 2015-09-25 10:15:00"
## [149] "Maximum: 100% of total at 2015-09-25 13:45:00"
## [150] "Maximum: 100% of total at 2015-09-25 14:15:00"
## [151] "Maximum: 100% of total at 2015-09-25 15:15:00"
## [152] "Maximum: 100% of total at 2015-09-25 16:45:00"
## [153] "Maximum: 100% of total at 2015-09-25 20:45:00"
## [154] "Maximum: 100% of total at 2015-12-18 22:45:00"
## [155] "Maximum: 100% of total at 2016-01-17 12:45:00"
## [156] "Maximum: 100% of total at 2016-04-06 01:45:00"
## [157] "Maximum: 100% of total at 2016-04-06 02:15:00"
## [158] "Maximum: 100% of total at 2016-04-16 12:15:00"
## [159] "Maximum: 100% of total at 2016-04-20 01:15:00"
## [160] "Maximum: 100% of total at 2016-04-21 07:15:00"
## [161] "Maximum: 100% of total at 2016-04-29 00:45:00"
## [162] "Maximum: 100% of total at 2016-04-29 20:15:00"
## [163] "Maximum: 100% of total at 2016-04-30 13:15:00"
## [164] "Maximum: 100% of total at 2016-05-07 19:15:00"
## [165] "Maximum: 100% of total at 2016-05-19 04:45:00"
## [166] "Maximum: 100% of total at 2016-05-25 03:45:00"
## [167] "Maximum: 100% of total at 2016-05-29 15:45:00"
## [168] "Maximum: 100% of total at 2016-05-31 03:15:00"
## [169] "Maximum: 100% of total at 2016-05-31 13:45:00"
## [170] "Maximum: 100% of total at 2016-06-01 11:15:00"
## [171] "Maximum: 100% of total at 2016-06-02 06:45:00"
## [172] "Maximum: 100% of total at 2016-06-03 11:45:00"
## [173] "Maximum: 100% of total at 2016-06-03 15:45:00"
## [174] "Maximum: 100% of total at 2016-06-05 19:45:00"
## [175] "Maximum: 100% of total at 2016-06-07 02:45:00"
## [176] "Maximum: 100% of total at 2016-06-09 17:15:00"
## [177] "Maximum: 100% of total at 2016-06-09 18:45:00"
## [178] "Maximum: 100% of total at 2016-06-13 02:45:00"
## [179] "Maximum: 100% of total at 2016-06-14 03:15:00"
## [180] "Maximum: 100% of total at 2016-06-15 10:15:00"
## [181] "Maximum: 100% of total at 2016-06-18 05:45:00"
## [182] "Maximum: 100% of total at 2016-06-20 20:45:00"
## [183] "Maximum: 100% of total at 2016-06-21 12:15:00"
## [184] "Maximum: 100% of total at 2016-06-21 13:45:00"
## [185] "Maximum: 100% of total at 2016-06-22 20:45:00"
## [186] "Maximum: 100% of total at 2016-06-24 04:15:00"
## [187] "Maximum: 100% of total at 2016-07-10 20:15:00"
## [188] "Maximum: 100% of total at 2016-07-12 05:15:00"
## [189] "Maximum: 100% of total at 2016-07-20 15:15:00"
## [190] "Maximum: 100% of total at 2016-07-21 14:15:00"
## [191] "Maximum: 100% of total at 2016-07-23 16:15:00"
## [192] "Maximum: 100% of total at 2016-07-27 01:15:00"
## [193] "Maximum: 100% of total at 2016-07-27 10:15:00"
## [194] "Maximum: 100% of total at 2016-07-27 10:45:00"
## [195] "Maximum: 100% of total at 2016-07-29 00:15:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.28: Minimum % hydro, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "HYDRO_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Hydro generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.29: % hydro, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.30: Mean % hydro, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.31: Maximum % hydro, last 6 months
results$maxDateReport
## [1] "Maximum: 74.7% of total at 2024-10-04 00:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.32: Minimum % hydro, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, GEO_perc := 100*Geo/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "GEO_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Geothermal generation",
unit = "%",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.33: % geothermal, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.34: Mean % geothermal, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.35: Maximum % geothermal, all years
results$maxDateReport
## [1] "Maximum: 34.7% at 2024-09-02 03:15:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.36: Minimum % geothermal, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "GEO_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Geothermal generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.37: % geothermal, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.38: Mean % geothermal, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.39: Maximum % geothermal, last 6 months
results$maxDateReport
## [1] "Maximum: 34.7% of total at 2024-09-02 03:15:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.40: Minimum % geothermal, last 6 months
#results$minDateReport
Wood - potential for growth (biofuels etc, esp if forestry expansion under ETS. Oh.)
nzGenMix_wide_dt[, WOOD_perc := 100*Wood/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "WOOD_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Wood generation",
unit = "%",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.41: % wood, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.42: Mean % wood, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.43: Maximum % wood, all years
results$maxDateReport
## [1] "Maximum: 1.3% at 2014-04-20 03:45:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.44: Minimum % wood, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "WOOD_perc",
lowColour = "red",
highColour = "green",
scaleLab = "Wood generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.45: % wood, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.46: Mean % wood, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.47: Maximum % wood, last 6 months
results$maxDateReport
## [1] "Maximum: 1.2% of total at 2024-10-28 04:15:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.48: Minimum % wood, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, GAS_perc := 100*Gas/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "GAS_perc",
lowColour = "green",
highColour = "red",
scaleLab = "Gas generation",
unit = "%",
minMax = "max" # max line or min line?
)
results$tile
Figure 6.49: % gas, all years
results$line_mean
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.50: Mean % gas, all years
results$line_max
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.51: Maximum % gas, all years
results$maxDateReport
## [1] "Maximum: 64.3% at 2014-11-05 03:15:00"
results$line_min
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.52: Minimum % gas, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "GAS_perc",
lowColour = "green",
highColour = "red",
scaleLab = "Gas generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.53: % gas, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.54: Mean % gas, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.55: Maximum % gas, last 6 months
results$maxDateReport
## [1] "Maximum: 22% of total at 2024-08-24 22:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.56: Minimum % gas, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, COAL_perc := 100*Coal/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "COAL_perc",
lowColour = "green",
highColour = "red",
scaleLab = "Coal generation",
unit = "%",
minMax = "max" # max line or min line?
)
results$tile+
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.57: % coal, all years
results$line_mean +
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.58: Mean % coal, all years
results$line_max+
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.59: Maximum % coal, all years
results$maxDateReport
## [1] "Maximum: 75.4% at 2014-11-11 01:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.60: Minimum % coal, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "COAL_perc",
lowColour = "green",
highColour = "red",
scaleLab = "Coal generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.61: % coal, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.62: Mean % coal, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.63: Maximum % coal, last 6 months
results$maxDateReport
## [1] "Maximum: 16.4% of total at 2024-07-26 01:15:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.64: Minimum % coal, last 6 months
#results$minDateReport
nzGenMix_wide_dt[, DIESEL_perc := 100*Diesel/dv_total]
results <- make_NgesoPlots(nzGenMix_wide_dt,
var = "DIESEL_perc",
lowColour = "green",
highColour = "red",
scaleLab = "Diesel generation",
unit = "%",
minMax = "max" # max line or min line?
)
results$tile+
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.65: % coal, all years
results$line_mean +
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.66: Mean % diesel, all years
results$line_max+
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.67: Maximum % diesel, all years
results$maxDateReport
## [1] "Maximum: 3% at 2018-10-15 10:45:00"
results$line_min +
scale_x_date(date_labels="%b-%Y")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
## Warning: Failed to fit group -1.
## Caused by error in `gam.reparam()`:
## ! NA/NaN/Inf in foreign function call (arg 3)
Figure 6.68: Minimum % diesel, all years
#results$minDateReport
results <- make_NgesoPlots(nzGenMix_wide_dt[dv_date > recentDateCut],
var = "DIESEL_perc",
lowColour = "green",
highColour = "red",
scaleLab = "Diesel generation",
minMax = "max",
unit_lab = "% of total"
)
results$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
Figure 6.69: % diesel, last 6 months
results$line_mean +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.70: Mean % diesel, last 6 months
results$line_max+
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.71: Maximum % diesel, last 6 months
results$maxDateReport
## [1] "Maximum: 3% of total at 2024-08-13 22:15:00"
results$line_min +
scale_x_date(date_labels="%b-%Y",date_breaks ="1 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Figure 6.72: Minimum % diesel, last 6 months
#results$minDateReport
These plots are a denser version of (e.g.) Figure 5.1 because they plot half-hourly %.
# calculate % contribution in each half hour
# long form data
plotDT <- nzGenMix_dt[, .(GWh = sum(kWh/1000000, na.rm = TRUE)),
keyby = .(Fuel_Code, dv_dateTime)]
## Processed 1065868 groups out of 1686616. 63% done. Time elapsed: 3s. ETA: 1s.Processed 1424342 groups out of 1686616. 84% done. Time elapsed: 4s. ETA: 0s.Processed 1686616 groups out of 1686616. 100% done. Time elapsed: 4s. ETA: 0s.
plotDT[, pc := 100*GWh/sum(GWh), keyby = .(dv_dateTime)]
p <- ggplot2::ggplot(plotDT,
aes(x = dv_dateTime,
y = pc,
colour = Fuel_Code)) +
geom_line() +
scale_colour_viridis_d() +
labs(y = "%",
x = "Half hour")
fix_dateTime_axis(p)
Figure 6.73: Half-hourly % contribution by fuel over time (all years)
p <- ggplot2::ggplot(plotDT,
aes(x = dv_dateTime,
y = pc,
fill = Fuel_Code)) +
geom_col(position = "stack") +
scale_fill_viridis_d() +
labs(y = "%",
x = "Half hour")
fix_dateTime_axis(p) +
coord_flip()
# calculate % contribution in each half hour
p <- ggplot2::ggplot(plotDT[dv_dateTime > recentDateCut],
aes(x = dv_dateTime,
y = pc,
colour = Fuel_Code)) +
geom_line() +
scale_colour_viridis_d() +
labs(y = "%",
x = "Half hour")
fix_dateTime_axis(p, breaks = "1 month")
Figure 6.74: Half-hourly % contribution by fuel over time (last 6 months)
p <- ggplot2::ggplot(plotDT[dv_dateTime > recentDateCut],
aes(x = dv_dateTime,
y = pc,
fill = Fuel_Code)) +
geom_col(position = "stack") +
scale_fill_viridis_d() +
labs(y = "%",
x = "Half hour")
fix_dateTime_axis(p, breaks = "1 month") +
coord_flip()
p <- ggplot2::ggplot(plotDT[Fuel_Code == "Wind" | Fuel_Code == "Hydro" |
Fuel_Code == "Solar"],
aes(x = dv_dateTime,
y = pc,
colour = Fuel_Code)) +
geom_line(alpha=0.5) +
geom_smooth() +
scale_colour_manual(values = c("lightblue",
"orange",
"green") # what colour is the wind?!
) +
labs(y = "% of generation",
x = "Half hour")
fix_dateTime_axis(p)
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.75: Comparison of hydro vs wind vs solar % half-hourly contribution over time (all years)
Figure 6.76 shows the recent half-hourly % of generation from hydro, wind and grid solar.
p <- ggplot2::ggplot(plotDT[dv_dateTime > recentDateCut & (Fuel_Code == "Wind" | Fuel_Code == "Hydro" | Fuel_Code == "Solar")],
aes(x = dv_dateTime,
y = pc,
colour = Fuel_Code)) +
geom_line(alpha=0.5) +
geom_smooth() +
scale_colour_manual(values = c("lightblue",
"orange",
"green") # what colour is the wind?!
) +
labs(y = "% of generation",
x = "Half hour")
fix_dateTime_axis(p, breaks = "1 month")
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Figure 6.76: Comparison of hydro vs wind vs solar % half-hourly contribution over time (last 6 months)
nzGenMix_wide_dt[, ratio := WIND_perc/HYDRO_perc]
yMax <- max(nzGenMix_wide_dt$ratio)
p <- ggplot2::ggplot(nzGenMix_wide_dt,
aes(x = dv_dateTime,
y = 100*ratio,
colour = dv_season,
group = dv_season)) +
geom_point() +
geom_hline(yintercept = 100*yMax) +
annotate("text", x = mean(nzGenMix_wide_dt$dv_dateTime),
y = 100 * yMax*1.05,
label = paste0("Maximum: ", 100*round(yMax,2), "%"))+
labs(y = "Wind GWh as a % of Hydro GWh",
x = "Half hour")
fix_dateTime_axis(p)
Figure 6.77: Wind GWh as a % of hydro GWh (all years)
yMax <- max(nzGenMix_wide_dt[dv_dateTime > recentDateCut]$ratio)
p <- ggplot2::ggplot(nzGenMix_wide_dt[dv_dateTime > recentDateCut],
aes(x = dv_dateTime,
y = 100*ratio,
colour = dv_season,
group = dv_season)) +
geom_point() +
geom_hline(yintercept = 100*yMax) +
annotate("text", x = mean(nzGenMix_wide_dt[dv_dateTime > recentDateCut]$dv_dateTime),
y = 100 * yMax*1.05,
label = paste0("Maximum: ", 100*round(yMax,2), "%"))+
labs(y = "Wind GWh as a % of Hydro GWh",
x = "Half hour")
fix_dateTime_axis(p, breaks = "1 month")
Figure 6.78: Wind GWh as a % of hydro GWh (last 6 months)
Do we see a relationship between generation fuels and peak demand? This will be mediated by the way the electricity market works.
We may find wind curtailment (not visible here) at low demand periods where geothermal can’t be shut off.
First, what is the general average shape of overall generation?
‘Peak periods’ shown as shaded rectangles
# orginal values are kWh
plotDT <- nzGenMix_wide_dt[, .(mean_total_GWh = mean(dv_total/1000000),
mean_renewables_GWh = mean(RENEWABLE/1000000),
mean_renewables_pc = mean(RENEWABLE_perc),
mean_hydro_GWh = mean(Hydro/1000000),
mean_hydro_pc = mean(HYDRO_perc),
mean_coal_GWh = mean(Coal/1000000),
mean_coal_pc = mean(COAL_perc),
mean_gas_GWh = mean(Gas/1000000),
mean_gas_pc = mean(GAS_perc)), keyby = .(dv_hms, dv_year, dv_season, dv_peakPeriod)]
make_profilePlot <- function(dt, yVar = "mean_renewables_GWh", yVarLab = "change me"){
plotDT <- dt[, .(x = dv_hms, y = get(yVar), alpha = dv_year,
group = dv_year,
facet1 = dv_season,
colour = dv_peakPeriod)]
p <- ggplot2::ggplot(plotDT, aes(x = x,
y = y,
alpha = alpha,
group = group)) +
geom_rect(aes(xmin=hms::as_hms("07:00:00"), xmax=hms::as_hms("09:00:00"),
ymin=min(plotDT$y), ymax=max(plotDT$y)),
fill='pink', alpha=0.1) +
geom_rect(aes(xmin=hms::as_hms("16:00:00"), xmax=hms::as_hms("21:00:00"),
ymin=min(plotDT$y), ymax=max(plotDT$y)),
fill='pink', alpha=0.1) +
geom_line() +
scale_alpha_continuous(name = "Year") +
facet_wrap(facet1 ~ .) +
labs(x = "Time of day",
y = yVarLab,
caption = rmdParams$plotCap) +
theme(axis.text.x = element_text(angle = 45, hjust=1)) +
scale_x_time(breaks = scales::breaks_width("120 min"))
return(p)
}
make_profilePlot(plotDT, "mean_total_GWh", "Mean total (GWh)")
Figure 7.1: Mean half-hourly generation by year and season
Contribution of renewables…
make_profilePlot(plotDT, "mean_renewables_GWh", "Mean renewables (GWh)")
Figure 7.2: Mean half-hourly % renewable generation by year and season
make_profilePlot(plotDT, "mean_renewables_pc", "Mean % renewables")
Figure 7.3: Mean half-hourly % renewable generation by year and season
What is hydro’s contribution?
make_profilePlot(plotDT, "mean_hydro_GWh", "Mean hydro (GWh)")
Figure 7.4: Mean half-hourly % hydro generation by year and season
make_profilePlot(plotDT, "mean_hydro_pc", "Mean % hydro")
Figure 7.5: Mean half-hourly % hydro generation by year and season
What is coal’s contribution?
make_profilePlot(plotDT, "mean_coal_GWh", "Mean coal (GWh)")
Figure 7.6: Mean half-hourly % coal generation by year and season
make_profilePlot(plotDT, "mean_coal_pc", "Mean % coal")
Figure 7.7: Mean half-hourly % coal generation by year and season
What is gas’s contribution?
make_profilePlot(plotDT, "mean_gas_GWh", "Mean gas (GWh")
Figure 7.8: Mean half-hourly % gas generation by year and season
make_profilePlot(plotDT, "mean_gas_pc", "Mean % gas")
Figure 7.9: Mean half-hourly % gas generation by year and season
Relationship between hydro and overall generation
ggplot2::ggplot(nzGenMix_wide_dt, aes(y = Hydro/1000000, x = dv_total/1000000, colour = dv_peakPeriod)) +
geom_point() +
facet_grid(dv_year ~ dv_season) +
labs(y = "Hydro GWh per half hour",
x = "Total GWh per half hour")
YMMV on 7.10
plotDT <- nzGenMix_wide_dt[, .(mean_renewables_GWh = mean(RENEWABLE/1000000),
mean_generation_GWh = mean(dv_total/1000000)),
keyby = .(dv_year, dv_hms, dv_peakPeriod, dv_season)]
ggplot2::ggplot(plotDT, aes(x = mean_generation_GWh , y = mean_renewables_GWh,
colour = dv_peakPeriod)) +
geom_point() +
scale_color_discrete(name = "Period") +
facet_grid(dv_season ~ dv_year) +
labs(x = "Mean half-hourly generation (GWh)",
y = "Mean half-hourly renewables (GWh)",
caption = rmdParams$plotCap)
Figure 7.10: Mean renewables vs Mean total generation
That’s it.
You might want to look at recent academic research on this topic:
XX need to create a half-hourly
CARBON_INTENSITY
variable XX Requires: * per-fuel CI
“The grid-average emission factor best reflects the carbon dioxide equivalent emissions associated with the generation of a unit of electricity purchased from the national grid in New Zealand in 2020”
“We calculate purchased electricity emission factors on a calendar-year basis and based on the average grid mix of generation types for calendar years. The emission factor accounts for the emissions from fuel combustion at thermal power stations and fugitive emissions from the generation of geothermal electricity. Thermal electricity is generated by burning fossil fuels.
The emission factor for purchased grid-average electricity does not include transmission and distribution losses. ”
“This emission factor also doesn’t reflect the real-world factors that influence the carbon intensity of the grid such as time of year, time of day and geographical area. Therefore, a grid -average emission factor may over or underestimate your organisation’s GHG emissions.”
2020 value = 0.120 kg CO2/kWh
Instead use a model derived from the GB MWh generation mix for 2023.
Coefficients:
This is (obviously) completely broken as HYDRO_perc has a +ve coefficient, the model does not include a coefficient for Geothermal or Wood and the GB mix includes Nuclear, Interconnection and Storage. #YMMV
Need to fix :-)
But let’s imagine it is valid… what would we see?
# should be annual and fuel specific
# 2020 value
nzGenMix_wide_dt[, CARBON_INTENSITY := 41.231171 +
GAS_perc * 3.571570 +
COAL_perc * 10.050410 +
WIND_perc * -0.451285 +
HYDRO_perc * 1.147793 + # why is hydro +ve?
SOLAR_perc * -0.335122]
summary(nzGenMix_wide_dt$CARBON_INTENSITY)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 58.37 156.01 187.83 196.29 225.26 851.61
Seasons:
plotDT <- nzGenMix_wide_dt[, .(mean_CI = mean(CARBON_INTENSITY)), keyby = .(dv_year, dv_date, dv_season)]
ggplot2::ggplot(plotDT[dv_year > 2011], aes(x = dv_date, y = mean_CI, colour = dv_season)) +
geom_point() +
scale_color_viridis_d(name = "Season") +
theme(legend.position = "bottom") +
labs(x = "Date",
y = "Mean g CO2e/kWh",
caption = rmdParams$plotCap)
Figure 9.1: Mean half-hourly carbon intensity per day
ggplot2::ggsave(filename = "meanCiTrendBySeason.png",
path = rmdParams$plotPath
)
## Saving 7 x 5 in image
Re-draw as a boxplot of mean daily CI by month - plotted at month start. 9.2 shows outliers nicely.
plotDT <- nzGenMix_wide_dt[, .(mean_CI = mean(CARBON_INTENSITY)),
keyby = .(dv_year,
dv_date,
dv_season)]
plotDT[, dv_month := lubridate::floor_date(dv_date, unit = "months"),]
ggplot2::ggplot(plotDT[dv_year > 2011], aes(x = dv_month,
y = mean_CI,
group = dv_month,
colour = dv_season)) +
geom_boxplot() +
scale_color_viridis_d(name = "Season") +
theme(legend.position = "bottom") +
labs(x = "Month",
y = "Mean g CO2e/kWh",
caption = rmdParams$plotCap)
Figure 9.2: Mean daily CI boxplots per month
ggplot2::ggsave(filename = "meanCiTrendByMonthSeason.png",
path = rmdParams$plotPath
)
## Saving 7 x 5 in image
Figure 9.3 shows half-hourly carbon intensity over time.
#plotDT <- nzGenMix_wide_dt[, .()]
ci <- make_NgesoPlots(nzGenMix_wide_dt,
var = "CARBON_INTENSITY",
lowColour = "green",
highColour = "brown",
scaleLab = "Carbon intensity (g CO2/MW)",
minMax = "min"
)
ci$tile
Figure 9.3: Half-hourly carbon intensity over time
ci$line
## NULL
ci <- make_NgesoPlots(nzGenMix_wide_dt[dv_year > 2021],
var = "CARBON_INTENSITY",
lowColour = "green",
highColour = "brown",
scaleLab = "Carbon intensity (g CO2/MW)",
minMax = "min"
)
ci$tile +
scale_x_date(date_labels="%b-%Y",date_breaks ="3 month")
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.
ci$line +
scale_x_date(date_labels="%b-%Y",date_breaks ="3 month")
## NULL
Mean carbon intensity per year and season within peak period.
Figure 9.4 suggests evening peak periods still have slightly higher carbon intensity and the shape of the reduction curves differ by season although rather less by period. Interestingly the sustained reduction in carbon intensity in Summer has leveled off.
plotDT <- nzGenMix_wide_dt[, .(mean_CI = mean(CARBON_INTENSITY)), keyby = .(dv_year, dv_peakPeriod, dv_season)]
ggplot2::ggplot(plotDT, aes(x = dv_year, y = mean_CI, colour = dv_peakPeriod)) +
geom_line() +
scale_color_viridis_d(name = "Peak period") +
facet_wrap(. ~ dv_season) +
labs(x = "Year",
y = "Mean g CO2e/kWh",
caption = rmdParams$plotCap)
Figure 9.4: Mean half-hourly carbon intensity by peak period and season 2012-2022
ggplot2::ggsave(filename = "annualMeanCIByPeak.png",
path = rmdParams$plotPath
)
## Saving 7 x 5 in image
t <- nzGenMix_dt[, .(TWh = sum(kWh/1000000000)), keyby =.(Fuel_Code, Tech_Code)]
dct <- dcast(t, Fuel_Code ~ Tech_Code)
## Using 'TWh' as value column. Use 'value.var' to override
knitr::kable(dct, digits = 3, caption = "Fuel codes by technology code (total TWh in dataset)")
Fuel_Code | Cogen | Geo | Hydro | Solar | Thrml | Wind |
---|---|---|---|---|---|---|
Coal | NA | NA | NA | NA | 23.097 | NA |
Diesel | NA | NA | NA | NA | 0.066 | NA |
Gas | 13.445 | NA | NA | NA | 64.437 | NA |
Gas&Oil | NA | NA | NA | NA | 0.000 | NA |
Geo | NA | 89.439 | NA | NA | NA | NA |
Hydro | NA | NA | 321.466 | NA | NA | NA |
Solar | NA | NA | NA | 0.042 | NA | NA |
Wind | NA | NA | NA | NA | NA | 28.258 |
Wood | 3.181 | NA | NA | NA | NA | NA |
Table 9.2 shows annual GWh and % GWh by fuel code.
t <- nzGenMix_dt[, .(GWh = sum(kWh/1000000), na.rm = TRUE),
keyby = .(dv_year, Fuel_Code)]
t[, GWh_pc := 100*GWh/sum(GWh), keyby = .(dv_year)]
dct <- dcast(t, dv_year ~ Fuel_Code, value.var = "GWh")
knitr::kable(dct, digits = 2,
caption = "GWh per year by Fuel Code - beware incomplete years")
dv_year | Coal | Diesel | Gas | Gas&Oil | Geo | Hydro | Solar | Wind | Wood |
---|---|---|---|---|---|---|---|---|---|
2010 | 2603.07 | 1.48 | 7935.46 | 0 | 5380.56 | 23996.73 | NA | 1593.11 | 249.76 |
2011 | 1846.13 | 0.46 | 7490.50 | 0 | 5645.07 | 24350.71 | NA | 1823.75 | 235.69 |
2012 | 2883.91 | 2.54 | 8202.50 | 0 | 5740.41 | 22104.06 | NA | 1895.02 | 268.21 |
2013 | 2013.99 | 2.48 | 7833.49 | NA | 5919.11 | 22385.31 | NA | 1865.04 | 275.90 |
2014 | 1280.19 | 0.79 | 5732.63 | NA | 5503.81 | 20313.43 | NA | 1576.89 | 222.25 |
2015 | 0.00 | NA | NA | NA | NA | 4757.45 | NA | 53.09 | NA |
2016 | 160.34 | 0.77 | 1950.47 | NA | 2956.09 | 13472.10 | NA | 830.84 | 90.97 |
2017 | 904.01 | 3.19 | 6321.03 | NA | 7348.49 | 24224.16 | NA | 1678.37 | 257.80 |
2018 | 1172.10 | 6.44 | 5152.13 | NA | 7186.04 | 25301.65 | NA | 1658.30 | 220.02 |
2019 | 1611.55 | 2.68 | 5464.55 | NA | 7208.82 | 24654.80 | NA | 1829.08 | 249.63 |
2020 | 1733.88 | 4.43 | 5544.49 | NA | 7552.72 | 23402.44 | NA | 2138.96 | 240.85 |
2021 | 2540.83 | 17.95 | 4789.51 | NA | 7561.92 | 23338.75 | NA | 2482.90 | 242.53 |
2022 | 955.02 | 3.35 | 4231.26 | NA | 7424.67 | 25136.27 | NA | 2694.68 | 220.00 |
2023 | 1563.78 | 0.88 | 3238.85 | NA | 7142.26 | 25369.50 | NA | 3073.45 | 204.99 |
2024 | 1828.50 | 18.99 | 3995.20 | NA | 6868.86 | 18658.93 | 41.91 | 3064.58 | 202.73 |
dct <- dcast(t, dv_year ~ Fuel_Code, value.var = "GWh_pc")
knitr::kable(dct, digits = 1,
caption = "% GWh per year by Fuel Code - beware incomplete years")
dv_year | Coal | Diesel | Gas | Gas&Oil | Geo | Hydro | Solar | Wind | Wood |
---|---|---|---|---|---|---|---|---|---|
2010 | 6.2 | 0.0 | 19.0 | 0 | 12.9 | 57.5 | NA | 3.8 | 0.6 |
2011 | 4.5 | 0.0 | 18.1 | 0 | 13.6 | 58.8 | NA | 4.4 | 0.6 |
2012 | 7.0 | 0.0 | 20.0 | 0 | 14.0 | 53.8 | NA | 4.6 | 0.7 |
2013 | 5.0 | 0.0 | 19.4 | NA | 14.7 | 55.6 | NA | 4.6 | 0.7 |
2014 | 3.7 | 0.0 | 16.6 | NA | 15.9 | 58.7 | NA | 4.6 | 0.6 |
2015 | 0.0 | NA | NA | NA | NA | 98.9 | NA | 1.1 | NA |
2016 | 0.8 | 0.0 | 10.0 | NA | 15.2 | 69.2 | NA | 4.3 | 0.5 |
2017 | 2.2 | 0.0 | 15.5 | NA | 18.0 | 59.5 | NA | 4.1 | 0.6 |
2018 | 2.9 | 0.0 | 12.7 | NA | 17.7 | 62.2 | NA | 4.1 | 0.5 |
2019 | 3.9 | 0.0 | 13.3 | NA | 17.6 | 60.1 | NA | 4.5 | 0.6 |
2020 | 4.3 | 0.0 | 13.7 | NA | 18.6 | 57.6 | NA | 5.3 | 0.6 |
2021 | 6.2 | 0.0 | 11.7 | NA | 18.5 | 57.0 | NA | 6.1 | 0.6 |
2022 | 2.3 | 0.0 | 10.4 | NA | 18.3 | 61.8 | NA | 6.6 | 0.5 |
2023 | 3.9 | 0.0 | 8.0 | NA | 17.6 | 62.5 | NA | 7.6 | 0.5 |
2024 | 5.3 | 0.1 | 11.5 | NA | 19.8 | 53.8 | 0.1 | 8.8 | 0.6 |
skimr::skim(nzGenMix_wide_dt)
Name | nzGenMix_wide_dt |
Number of rows | 260034 |
Number of columns | 35 |
Key | dv_dateTime |
_______________________ | |
Column type frequency: | |
Date | 1 |
difftime | 2 |
factor | 2 |
numeric | 29 |
POSIXct | 1 |
________________________ | |
Group variables | None |
Variable type: Date
skim_variable | n_missing | complete_rate | min | max | median | n_unique |
---|---|---|---|---|---|---|
dv_date | 0 | 1 | 2010-01-01 | 2024-10-31 | 2017-06-01 | 5418 |
Variable type: difftime
skim_variable | n_missing | complete_rate | min | max | median | n_unique |
---|---|---|---|---|---|---|
dv_hms | 0 | 1 | 900 secs | 85500 secs | 42300 secs | 48 |
hms | 0 | 1 | 900 secs | 85500 secs | 42300 secs | 48 |
Variable type: factor
skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
---|---|---|---|---|---|
dv_season | 0 | 1 | FALSE | 4 | Aut: 66240, Win: 66240, Spr: 64050, Sum: 63504 |
dv_peakPeriod | 0 | 1 | FALSE | 5 | Ear: 75852, Day: 75852, Eve: 43344, Lat: 43314 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
Coal | 0 | 1 | 88824.21 | 93755.15 | 0.00 | 0.00 | 70009.00 | 146550.25 | 484036.00 | ▇▃▂▁▁ |
Diesel | 0 | 1 | 255.45 | 3023.48 | 0.00 | 0.00 | 0.00 | 0.00 | 79835.00 | ▇▁▁▁▁ |
Gas | 0 | 1 | 299507.31 | 180203.34 | 0.00 | 183142.00 | 300442.30 | 419389.03 | 868672.05 | ▅▇▆▂▁ |
Gas&Oil | 0 | 1 | 0.00 | 0.02 | 0.00 | 0.00 | 0.00 | 0.00 | 10.00 | ▇▁▁▁▁ |
Geo | 0 | 1 | 343950.43 | 136947.76 | 0.00 | 326860.63 | 389747.94 | 429947.43 | 564010.00 | ▂▁▂▇▁ |
Hydro | 0 | 1 | 1236247.18 | 481540.63 | 10602.00 | 972676.07 | 1316613.54 | 1592607.33 | 2363701.00 | ▂▂▇▇▁ |
Solar | 0 | 1 | 161.16 | 1492.40 | 0.00 | 0.00 | 0.00 | 0.00 | 23760.00 | ▇▁▁▁▁ |
Wind | 0 | 1 | 108670.67 | 87375.87 | 0.00 | 38355.62 | 93197.76 | 164547.30 | 516562.00 | ▇▅▂▁▁ |
Wood | 0 | 1 | 12234.28 | 6898.30 | 0.00 | 7410.00 | 15486.00 | 17330.00 | 20156.00 | ▃▁▁▅▇ |
dv_year | 0 | 1 | 2016.92 | 4.28 | 2010.00 | 2013.00 | 2017.00 | 2021.00 | 2024.00 | ▇▇▇▇▇ |
dv_month | 0 | 1 | 6.47 | 3.43 | 1.00 | 4.00 | 6.00 | 9.00 | 12.00 | ▇▆▆▆▇ |
dv_hour | 0 | 1 | 11.50 | 6.92 | 0.00 | 5.00 | 11.00 | 17.00 | 23.00 | ▇▇▆▇▇ |
dv_total | 0 | 1 | 2089850.68 | 769195.15 | 16628.18 | 1825026.58 | 2281057.91 | 2593708.25 | 3626574.00 | ▂▁▅▇▁ |
dv_coal_gas | 0 | 1 | 388331.52 | 240465.87 | 0.00 | 224730.25 | 377517.80 | 546313.09 | 1285566.13 | ▆▇▅▁▁ |
dv_coal_gas_pc | 0 | 1 | 16.85 | 9.73 | 0.00 | 10.70 | 16.91 | 22.99 | 92.89 | ▇▆▁▁▁ |
dv_solar_wind | 0 | 1 | 108831.83 | 87597.80 | 0.00 | 38480.32 | 93316.03 | 164700.51 | 531425.00 | ▇▅▁▁▁ |
dv_solar_wind_pc | 0 | 1 | 4.98 | 4.02 | 0.00 | 1.90 | 4.20 | 7.27 | 61.06 | ▇▁▁▁▁ |
RENEWABLE | 0 | 1 | 1701263.72 | 620149.02 | 12297.04 | 1496181.29 | 1840074.58 | 2118711.42 | 3062302.00 | ▂▁▆▇▁ |
RENEWABLE_perc | 0 | 1 | 83.14 | 9.74 | 7.11 | 76.99 | 83.08 | 89.30 | 100.00 | ▁▁▁▆▇ |
WIND_perc | 0 | 1 | 4.97 | 4.01 | 0.00 | 1.89 | 4.20 | 7.26 | 61.06 | ▇▁▁▁▁ |
SOLAR_perc | 0 | 1 | 0.01 | 0.06 | 0.00 | 0.00 | 0.00 | 0.00 | 1.20 | ▇▁▁▁▁ |
HYDRO_perc | 0 | 1 | 62.39 | 14.50 | 7.11 | 53.98 | 59.97 | 65.82 | 100.00 | ▁▁▇▃▂ |
GEO_perc | 0 | 1 | 15.23 | 6.79 | 0.00 | 13.04 | 16.08 | 19.25 | 34.68 | ▂▃▇▂▁ |
WOOD_perc | 0 | 1 | 0.54 | 0.33 | 0.00 | 0.31 | 0.63 | 0.76 | 1.29 | ▅▂▇▃▁ |
GAS_perc | 0 | 1 | 12.91 | 7.06 | 0.00 | 8.91 | 13.28 | 17.64 | 64.26 | ▇▇▁▁▁ |
COAL_perc | 0 | 1 | 3.94 | 4.97 | 0.00 | 0.00 | 3.03 | 6.39 | 75.43 | ▇▁▁▁▁ |
DIESEL_perc | 0 | 1 | 0.01 | 0.11 | 0.00 | 0.00 | 0.00 | 0.00 | 3.04 | ▇▁▁▁▁ |
ratio | 0 | 1 | 0.09 | 0.08 | 0.00 | 0.03 | 0.07 | 0.13 | 1.57 | ▇▁▁▁▁ |
CARBON_INTENSITY | 0 | 1 | 196.29 | 52.98 | 58.37 | 156.01 | 187.83 | 225.26 | 851.61 | ▇▃▁▁▁ |
Variable type: POSIXct
skim_variable | n_missing | complete_rate | min | max | median | n_unique |
---|---|---|---|---|---|---|
dv_dateTime | 0 | 1 | 2010-01-01 00:15:00 | 2024-10-31 23:45:00 | 2017-06-01 23:30:00 | 260034 |
Packages etc: