aboutsummaryrefslogtreecommitdiff
path: root/results/analysis4_scalability.R
blob: d799276c765517b330fae1e4e27ce1ba0f436bf3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
library("tidyverse")
library("ggthemes")
library("gridExtra")
library("patchwork")
library(RColorBrewer)

data=read_csv("results_scalability.csv")    
r_=function(x){round(x,digits=1)}
color=function(){scale_fill_brewer(palette = "Accent")}
color2=function(){scale_fill_brewer(palette = "Set2")}
nolegend=function(){theme(legend.position="none")}
simkeys=unique(data$simkey)
nsimkeys=length(simkeys)
s_=function(x){if(x<0){return("")}else{return("+")}}
simkey_rename=function(key){
    if(key=="hint")
        return("Hints")
    if(key=="baseline")
        return("Baseline")
    if(key=="extended")
        return("Extended")
    if(key=="hintandextended")
        return("Hints+Extended")
    return(key)
}
dformat=function(data){
    data%>%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","Nb-IoT"))
}
g_legend <- function(a.gplot){ 
    tmp <- ggplot_gtable(ggplot_build(a.gplot)) 
    leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box") 
    legend <- tmp$grobs[[leg]] 
    legend
}

custom_theme=function(){theme_clean()+ theme(plot.background=element_blank())}

data=data%>%dformat()

# Compute delivery success
statsSuccess=data%>%filter(isSender!=0)%>%group_by(wireless,wakeupfor,n_nodes,seed,simkey)%>%summarize(success=mean(nSend))%>%ungroup()
data=data%>%left_join(statsSuccess,by=c("wireless","wakeupfor","n_nodes","seed","simkey"))

# Computer stats senders
statsSender=data%>%filter(isSender!=0)%>%group_by(wireless,wakeupfor,n_nodes,seed,simkey)%>%summarize(success=mean(success),energy=mean(energy))%>%ungroup()
statsSender=statsSender%>%group_by(wireless,wakeupfor,n_nodes,simkey)%>%summarize(success_sd=sd(success),success=mean(success),energy_sd=sd(energy),energy=mean(energy))%>%ungroup()

# Computer stats receiver
statsReceiver=data%>%filter(isSender==0)%>%group_by(wireless,wakeupfor,n_nodes,seed,simkey)%>%summarize(success=mean(success),energy=mean(energy))%>%ungroup()
statsReceiver=statsReceiver%>%group_by(wireless,wakeupfor,n_nodes,simkey)%>%summarize(success_sd=sd(success),success=mean(success),energy_sd=sd(energy),energy=mean(energy))%>%ungroup()


# Energy 
sender60sPlotEnergy=ggplot(statsSender%>%filter(wakeupfor==60),aes(n_nodes,energy,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Sender")+
    guides(colour=FALSE,fill=guide_legend(title="Policy"))

sender180sPlotEnergy=ggplot(statsSender%>%filter(wakeupfor==180),aes(n_nodes,energy,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Sender")+
    guides(colour=FALSE,fill=guide_legend(title="Policy"))


receiver60sPlotEnergy=ggplot(statsReceiver%>%filter(wakeupfor==60),aes(n_nodes,energy,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy") +  custom_theme()+theme(legend.position="top")+ggtitle("Receiver")+
    guides(colour=FALSE,fill=guide_legend(title="Policy"))

receiver180sPlotEnergy=ggplot(statsReceiver%>%filter(wakeupfor==180),aes(n_nodes,energy,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=energy-energy_sd, ymax=energy+energy_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Energy consumption (J)")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+ggtitle("Receiver")+
    guides(colour=FALSE,fill=guide_legend(title="Policy"))

# Success
sender60sPlotSuccess=ggplot(statsSender%>%filter(wakeupfor==60),aes(n_nodes,success,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
    theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))

sender180sPlotSuccess=ggplot(statsSender%>%filter(wakeupfor==180),aes(n_nodes,success,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
    theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))


receiver60sPlotSuccess=ggplot(statsReceiver%>%filter(wakeupfor==60),aes(n_nodes,success,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy") +  custom_theme()+theme(legend.position="top")+
    theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))

receiver180sPlotSuccess=ggplot(statsReceiver%>%filter(wakeupfor==180),aes(n_nodes,success,color=simkey,group=simkey))+
    geom_ribbon(aes(ymin=success-success_sd, ymax=success+success_sd,fill=simkey),linetype=1,alpha=0.4)+
    geom_point()+geom_line()+
    facet_wrap(~wireless)+xlab("Number of node")+ylab("Number of delivery success")+labs(colour="Policy")+custom_theme()+theme(legend.position="top")+
    theme(panel.background = element_rect(fill = '#EFEFEF', color=NA))+guides(colour=FALSE,fill=guide_legend(title="Policy"))



w=15
h=9
space=2
ggsave("scalability_60s.pdf",plot=(sender60sPlotEnergy+theme(plot.margin=unit(c(0.1,space,0,0),"cm"))+receiver60sPlotEnergy)/sender60sPlotSuccess+plot_layout(guides = 'collect')&theme(legend.position="bottom"),width=w,height=h)
ggsave("scalability_180s.pdf",plot=(sender180sPlotEnergy+theme(plot.margin=unit(c(0.1,space,0,0),"cm"))+receiver180sPlotEnergy)/sender180sPlotSuccess+plot_layout(guides = 'collect')&theme(legend.position="bottom"),width=w,height=h)