Skip to content

Commit 37664d6

Browse files
authored
Merge pull request #2 from joph/master
2 examples from R
2 parents 1dc4509 + 263566e commit 37664d6

File tree

6 files changed

+105
-0
lines changed

6 files changed

+105
-0
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,7 @@ coverage.xml
3939

4040
# Pycharm
4141
.idea
42+
43+
# data for r examples
44+
session3_r/data/time_series_60min_singleindex.csv
45+
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Scenario,Total Cost,Emissions,Emission Cost,Effective Cost
2+
EUA160,36565865.34,73998.29,11839726.76,24726138.58
3+
s1 ,17449018.62,310000,1834182.25,15614836.37
4+
s2 ,17582040.87,290000,1718150.62,15863890.25
5+
s3 ,17758154.39,270000,1599613.6,16158540.79
6+
s4 ,17967819.71,250000,1482636.85,16485182.86
7+
s5 ,18226832.31,230000,1362914.56,16863917.75
8+
s6 ,18553157.49,210000,1246233.1,17306924.39
9+
s7 ,19024149.18,190000,1129364.67,17894784.51
10+
s8 ,19609195.86,170000,1009683.16,18599512.7
11+
s9 ,20269960.94,150000,891754.21,19378206.73
12+
s10 ,21065706.54,130000,774290.22,20291416.32
13+
s11 ,22048343.39,110000,658222.07,21390121.32
14+
s12,23399710.17,90000,540872.81,22858837.36
15+
s13,25866808.68,70000,423623.79,25443184.89
16+
s14,33875183.48,50000,303411.2,33571772.28
4.95 KB
Binary file not shown.
77.1 KB
Loading

session3_r/scripts/emissions_figure.R

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
library(tidyverse)
2+
library(ggplot)
3+
# Plot Figure on Multi-Objective Analysis of electricity systems
4+
# for UBRM-Book/Chapter 6.1
5+
6+
### Set Working Directory - works in R-Studio only
7+
scriptDir<-dirname(rstudioapi::getActiveDocumentContext()$path)
8+
setwd(paste0(scriptDir,"/../"))
9+
10+
11+
tab_emissions_costs<-read_csv("data/results_ubrmskript.csv")
12+
13+
points_scenarios<-tab_emissions_costs %>%
14+
filter(Scenario %in% c("EUA160","s8")) %>%
15+
mutate(Szenario=Scenario)
16+
17+
points_scenarios$Szenario<-c("160 Euro CO2-Preis","170 Millionen tCO2 Limit")
18+
19+
erc_colors<-c("#C72321","#6E9B9E")
20+
21+
tab_emissions_costs %>% ggplot(aes(x=Emissions/1000,y=`Effective Cost`/10^6)) +
22+
geom_line() +
23+
geom_point() +
24+
theme_bw() +
25+
xlab("Emissionen (Millionen tCO2/Jahr)") +
26+
ylab("Brennstoff- und Kapitalkosten des Stromsystems (Milliarden Euro/Jahr)") +
27+
geom_point(data=points_scenarios,aes(x=Emissions/1000,y=`Effective Cost`/10^6,col=Szenario,shape=Szenario),size=5) +
28+
scale_color_manual(values=c(erc_colors,erc_colors))
29+
30+
31+
ggsave("figures/figure_multi_objective.png")
32+
33+
ggsave("figures/figure_multi_objective.pdf")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Calculates the market value of renewables (Wind and PV) for the German market
2+
# using Open Power System Data
3+
4+
library(ggplot2)
5+
library(tidyverse)
6+
library(wesanderson)
7+
8+
### Set Working Directory - works in R-Studio only
9+
scriptDir<-dirname(rstudioapi::getActiveDocumentContext()$path)
10+
setwd(paste0(scriptDir,"/../"))
11+
12+
# Download file from open power system data (opsd)
13+
14+
opsd_filename<-"data/time_series_60min_singleindex.csv"
15+
16+
if(!file.exists(opsd_filename)){
17+
download.file("https://data.open-power-system-data.org/time_series/2018-06-30/time_series_60min_singleindex.csv",
18+
destfile=opsd_filename)
19+
}
20+
21+
opsd<-read.csv(opsd_filename,sep=",") %>%
22+
as_tibble()
23+
24+
SECONDS_PER_HOUR <- 3600
25+
MWH_TO_GWH <- 1/1000
26+
TO_PERCENT <- 100
27+
28+
opsd$utc_timestamp<-strptime(as.character(opsd$utc_timestamp),format="%Y-%m-%dT%H:%M:%SZ")
29+
opsd$cet_cest_timestamp<-opsd$utc_timestamp + SECONDS_PER_HOUR
30+
31+
market_value<-opsd %>%
32+
select(-utc_timestamp) %>%
33+
mutate(year=year(cet_cest_timestamp)) %>%
34+
filter(year>2009&year<2018) %>%
35+
select(year,DE_price_day_ahead,DE_wind_generation_actual,DE_solar_generation_actual,DE_load_entsoe_power_statistics) %>%
36+
gather(Generation_Type,Generation,-year,-DE_price_day_ahead,-DE_load_entsoe_power_statistics) %>%
37+
mutate(Price=as.numeric(DE_price_day_ahead),
38+
Generation=as.numeric(Generation)*MWH_TO_GWH,
39+
Load=as.numeric(DE_load_entsoe_power_statistics)*MWH_TO_GWH) %>%
40+
mutate(Market_Value=Generation*Price) %>%
41+
group_by(year,Generation_Type) %>%
42+
summarize(Market_Value=mean(Market_Value,na.rm=TRUE)/(mean(Generation,na.rm=TRUE)*mean(Price,na.rm=TRUE)),
43+
Load=sum(Load,na.rm=TRUE),
44+
Generation_Share=TO_PERCENT*sum(Generation,na.rm=TRUE)/Load) %>%
45+
na.omit()
46+
47+
market_value %>% ggplot(aes(x=Generation_Share,y=Market_Value)) +
48+
xlab("Market Share (%)") + ylab("Normalized Market Value") +
49+
scale_color_brewer("",type="qual",palette=2) +
50+
geom_line(aes(col=Generation_Type),size=1,linetype=1) +
51+
geom_point(aes(col=Generation_Type),size=2)
52+

0 commit comments

Comments
 (0)