From 9ed371278933220a193584cd294e6064ac6dd88c Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Wed, 23 Jun 2021 13:27:38 +0200 Subject: [PATCH] Update analysis --- results/180sec.pdf | Bin 9828 -> 10343 bytes results/60sec.pdf | Bin 10103 -> 10611 bytes results/analysis2.R | 91 +++++++++++++++++++++++++++++--------------- 3 files changed, 60 insertions(+), 31 deletions(-) diff --git a/results/180sec.pdf b/results/180sec.pdf index 38aabdcb78fdcaf645416fe902d8801a5b31dbb2..2cf3a79851bb9df79dbce6b2b111849cc8a8aaf2 100644 GIT binary patch delta 6507 zcmaKQ2T)Vp_brGJYC@4F5J2hDOMuV`(mO~|K&tej(%TINP^t(*klu?FK{}x$AR^Ks z(!@e<5~K#?<@BO~fAS3a8FLZr%OK03=Mlj*C-}uT&y-%@+UJSdow`Wz0=J6$< zCoy7yp(p)&DtQ+NQWqyJoLv|Abqty_Z==)Hga0Zr_$*KC>bQyo-F?2xxiQy@f5-n2 zz?cD;{rrt3=GAV_Jhyw-1FtSh{+eBttZZ<;+fq^KoLAB!4vgHN{DQ4(i9~lS-D#2P z-3j2SSJ_<#Ch7CSPoKJ1(t|jW&H}iO;9mC>4Fkz^h z9&uB!eZM-_c7&gL!S{1jM(qrdV=y*-j`9ARB%v5x#IyR>A06Ixrnp&YkCTkBZP6#j zM8Dlv-9=EY`ZhLq8D7BuD*MZtEvE|k3Sy66c(A)3OYAltgr#L=yXSvoUE7}BNB979 z1_%0VEpswap-W6t@-3ZtCxcDf1E6~%p+{QMIX-qFXx%?XVM2+Rwmg}K&)v)K4@CSZ z5A6T64Nv_NcxA`wx508E$}C2X*G{(a*MMk?-ENBz{|UGE=J4k@nd2P1ylhW?w4dYF9qR7Fc{%-nsZ?`|dq23p*z5LU>QbxW-Cp2HuFa3oNCo09Q)k0W@ z<3ewao5!p0ZAG9VGs29mA;zGBMs|@$vT2{YH#6AE2tF@{7)lw}q|^GEd0YuYY=6v5 z%+`=-r>F0UvAe7;{(H;cpQ8A3x&7_!n{R6bEi8NPJ*yDVr5KFNhrzeR)V0t+U5uD* zA?xrSZv{%Bx)7S7*bS*+#?q2sD7_%%lMY&X`^WZ)8?1*vGqVJ}% z+x#56=t3uLMc^?KwZ(jJQsysU*CAR{10c8aV-p_m-piH2FC_$F$~Ad0Cu4zPk-<0& zbICCsX?v@F{7hxM%Ud!ADo-H)T~t?n-r_j(BafT@rt9B)H_Z&*P0)$W;Vc|jmbcP4#S~Bmk2`cRYt&tfx+0%<8#usijd{LS#p;#|}EDou}W@ha~fv5%04+GTcKk($YK?^;dn zpQZ5|1y$%5S(&&i_d-6vO|*z_dWC8E`9WS6_frGipAX)~9YlT9o7G@Ge^5!0RTIvy z?2FxQBxByT_js$*R)T)(sCUn6-oj;|?Zs36b)lc|?kC-qeehzwdQqdBY)w+><6+rHa8J{Y#UzfQG}QB#^k!dT;Y#^}W(R zbsbq%sTY%Xh)WYJQ{7VPiwdcgX3B(IZ0cuK-xvFAnWs$}59tY#e4f0W0c;Z;s%@0g zYLw9x^D9Xkj{lNK{06Ibwb4q+i+w(;hbYW5D={)CwpmaX%iaOwxY`G ziQR}#BJr8ys0(0xo(x0`4CnWhnz`>t><9(oLP&!y&GVk6F|HakCk+_qKWnNMJIW|g zq72l>+XwoR)|tphE7f+j-VCF0 z6(&(S(`dypYR?oW$_KAF%N=xD&$?T*f3nhPdc3{;F*tZ9=shnwR-aVRRzKep@wXkj zyD&A{I>b8`7wk<^on`02Zm_&@^VLqkJM1X7ec~5Im`YZMd;iMvFA7(wtnkg5CcZBQ zd48p|KDg*M9ZSH7XXmpUj&W$>*B!(D!eocjZ))sXX+wwOzf7RgA+MPYphs$HS`ib! z93avmSSkbPvBvG#%Zd1dNU~<>bCw$uH&=N$kKB%0tQTsg?}0j3q#0ggC`;2o6$F80kAU1NvO%U748G!-fg~Xv~j8*E0w;(WN1c87P zOLTlm?PZ^N%EPu{v>;nIF$?Cy_5c$sv&r)eF!w=G2#kvzM`$YuffcYQcjta0i%#Mo zun+c<$*kp*vC*#0?jli8FXMWS>;aAA*dl{>xr}{!JbIfMY;UQ{<@NOOtV)X73Q@9WosQG`~Rn>DmU0R z*!ViUf$L#s$#GLRYnLQ@=j&as;Z;85#qmwZ8q`HEN>A{d*HUE2b$MQs`O&l*F*b~a z^^Se$qEIy3$+oBP%0Yg>%6->kbXqv@0OiJLCHXf@OJAAc?ksNkCT zZ6Isd>d4Zx#Ok2<*kTE>g7TJDwhd~$)nW$$lsT})#+D4T+Y_A2Z(iXla~YPp7IGQF zEnD{1+TUN8V*?wW_8l}A`+PO1EK+WI+DC_uX@4XzqojH_LAJ+x$e>JgD1~TtxA=5s z+ytP5w?~)zB-H3V+qxNMgudaIu3cL@vQOUw3HWW+o-9iD0vxckT`)Y90Gg3Grjd;U zZ01&jC{`xr{@V{Cx`kBpepl!A{Tt<=Vmt%*Rb>_2LJly@6}Pkhi+173+eOo zi?e5InyYvFGGwz#t~))yXd@h0g?DV5d!lKaOMgx5W$T zj|CCJZM!;gd{blqc<^4|v|4RSMeAO&xGCsrGJrfzBbRv|MZf8EpQX0Z%@>)iv8xD) zi}g0$eL5fTTg>)(N~`}>bb@!&qccN+YB6CEncQyEg`xTFI(fQsS(@b>01!}iWmJCA z(f8P)H26=wH=Dq(7x>FbCR!uZm~o4dhOoZ5kIQIe0k|5d*+*Dc!))i3>8M6R=P#Wr zyqj11Loi8tuYQ) z8t$!B3gRn}q;{+RNhsK;P-}~ob?4f|gzzH7mmCbOEPgOg*}trc;Wz)VN6}Ce)!CcT zoFnBa-T=tjGy>O@CA|xmr)7CBGlupD3t+G}~@>HOJh#erX>S%sN}+<*7E3 zE+c5yU01^!dgT{&x}^}OtZ2n$sBq1)BcWU15E>7pk8?wuI>KG3l_6p4SiIhuO;liRg2)P~_v=cT1qzz_{TKPLmRCkp1?@?+RJ>EEr!-&WAUH z5G6%GHm9XzzPD^fe67&2>!m@I+ecMU=@1)JAIY@OP}W?&WczLowcd1 zn5uWkU$#q{8#??q4;Cn=gYxctn06m{L?}Iw2oUn4(vsTyz8!T)W^_&m9XOWfM*N}0X-ca>TiZtt4^eiRm>xIC%cK%_=^E~EAXfumqyOiAXSMpn4(NWnT8Uq0w z1>po9PJiTi6xbLTC*C1}BQFU&`|AZHls=}`Yn$|!f}30^`Pph96W992AKtz0S-Q!N z-|yM)Oc#*!+3DxeCp+S#n z0qp*?gX(WJyLFs!O_Rjm-N-m-!H&4s;zlrh@@@etKB<7<6}8q-|9`x~pWqc>V`Tyn z1g=U@QbEvpOw7>}N#HqoI!-*QZfyMsuAQF>c1*Ow1IC+N69Sfh$jC?9e(_k?kq(N2 z;au!}1Z9fY3jY+h)mKn|RVxf(8E4ze78lJ<*>Dc?91sU>phxSR#Nyl;v&NjVCX3rMD!{fWYmV0*D~HTpZ1)J|=I*Y;gk>L)*~v}dn|)R_`?rU3;eXOrCk zxRTS&lOo+qQ(660<<`_dj8z1x5byYXE1G}4+zNH;l*|YUd_C_EVf(@fsz7knGd0lT z>PFr7e+iO6{zUjFu>H3&HITHew#yl*?EOV2&7N5D{y#KSk3DBM^T_~WcmQ zNS`6v0y{2m6Pnoj&+im(jl55j!Pqyr8|d6lOEW-w@1W&nzt&^qWxj?7?aB9zlQd7v zI`X}Fvy*A)9Fi?Mmy{wY_SOIEO#hhk{r7DeS-5q@taSb7i;68Sj81azQ;)V8*sX_? zzm2gDNDq|#{0ImPS~>Hw(I*P7TV(k+K8#J~?qwYam5?jW6acw$v(Yms8-ZMJObNC; z`pi1Ol2Gl8xMtPDh5Ywl=ep~S?bVe;$H_7gs;?=TzeC`1#a2t7i!?PQ25;SYL%2l< ze_EXPzuM~S*-S{qOE6gv$7=L9+I|$OL;=7iJetsEYCyh;<6i>xqVE;$*SFoesW}io zCT*JrLPP{>74kQ;_o}Twk`JCm2#_XuXLH#e`|vU_t@B`7uV)MrkvgN6b1feUlHN18 z_4MFSo;ck{qEA)hqpvvSUFvY}PwIQ>0YJMUSmQTeF!au!t zW|lr}KXnySSBiBKY@o$&0Hu$_OLboF@2&2kyTR# zW7vJ>+B%Y~EMep~*lVpr+tMTs-77iaP8y%uq8n}g7)#TjbkV04PX(Xpc>0of+ugWb z;SC+ql6He@1qo^9#)XQfY6+jmJM8I@w#eV7B(a6oCq(&RmbKc20WQKTs!)_C85|%F z8*{SFLC6fYS3^*?8w@Dhj2<^;dZ)$_Zgc9pbS4}KljH(*BH|hD9%6HHt~{aZ_b(c$ z{N#=@ifxrmx3DXzMz80=qNCvj)Ag7$#me2)97CF*$BJ`wxpLW_VXV*Z9`xEw1zSv* z6ySs_&-N4tC(D84)GdNsjveRroTqLOuqSFhm(_}bV0kBlVre(omYkj$zopI?r88CCQ!QBF6$UQX9To9M(CG1m+9zNjtM`z>KCUE(`5)Z{Yt4aVqdP{T${k!{tPp_UJoc`{4(4vxr)1cwHPHTO3c}+cA}7gpPD?-+AW}>3=8f@z}|_;X#??K?U!CL zR#{)wSyw2~;PVxV)yU%W%R5@uy$pn7r&xGV{2O`{sPC7-Z*%`z@H0*nfXSfY$Ws-} zpy~Mf?t|D0#a)yZM|I}_x9O;gD92VS&H&?4(eFBIKhSc76%$H&XAZ5T*}XrKyN z(O;?Y9f88eo>fJ(UEv`X%Q2IXKDDxNc!nL>%?{yMYf55ch?0-Gx~72y^3VczAinv> zqlH1;wdR+?ldJSQXNh~y-Jy2FLEcNv&rMZ|_Dm`XvzD+{9jQhD%QjZGt7`j1-V!(Q zJv~ytyu}`wW3awG^{YKce<(n{MRa}g>|DAj63-YOuoy9Vt*drr@+i!<_wLBa8b)Pg zOR1w$5XW=dAUuLnaafh%Vg3(8$uH5{k~@DWEOu>oD6JZU>hIW(F1yqsdBZH*`$jEx zhV;)w2(* z3WJ;*)$~3b)rQ;6vv159U9Ent^`FiAdwM)N(yfROJo%AO^KH@No;~X=o~69AAhCyk zFZQe@uzQeX1QXp{DZ2aXmoed+$iS-A+zY*!dTGh{RrmNG`_n4D z-v-WAD*oiWa&&*rzD5^XR`g@FRKxtE{&&cezGG%RDPQMACb_Ok2{3O<>lcxeFSJVC1;N&=S=beMzFLKTw|ueQkb8hBFZE~h zfOiKgth3YH=C(fPl;K~vd5~j)3;nLvf-h>#GIFFHn==||)nYp@3%}SCk;3~zt$Ze+ z&$FSq!UkvjhSHs@>+D&B9d9?!aFM+PSMe~-z_Ny_|3O#0DNV`Cd)G*l@_ztIP<9~z delta 5988 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 g-#%FhF|q#{lZ3(&82MExWTnKQPx# diff --git a/results/60sec.pdf b/results/60sec.pdf index 3308a184e374108f3e376af78d0bb7f3d09c8258..f8bfdb30026f0b50d196a59bff71e2229894d4b6 100644 GIT binary patch delta 6776 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 N1WDN06*OLu{6E$16l?$h delta 6264 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 zg*BT>SwdEdTkJm{H%rowwise()%>%mutate(simkey=simkey_rename(simkey))%>%mutate(wireless=ifelse(wireless=="lora","LoRa","NbIoT")) +} +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 +} energy60=data%>%filter(wakeupfor==60) energy60Snd=energy60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Sender") energy60Rcv=energy60%>%filter(isSender==0)%>%group_by(simkey,wireless)%>%summarise(sd=sd(energy),energy=mean(energy),type="Receiver") -energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv)%>%mutate(type=factor(type,levels = c("Sender","Receiver"))) +energy60=energy60Snd%>%ungroup()%>%rbind(energy60Rcv) energy60=energy60%>%mutate(sd_min=energy-sd,sd_max=energy+sd)%>%mutate(sd_min_txt=paste0("-",r_(sd_min)))%>%mutate(sd_max_txt=paste0("+",r_(sd_max))) energy60Baseline=energy60%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id="id")%>%mutate(simkey=simkeys[id]) energy60=energy60%>%left_join(energy60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline")) energy60=energy60%>%mutate(ovhd=energy*100/energy_baseline-100) energy60=energy60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)")) -success60=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success=r_(mean(nSend)),type="Sender") +success60Snd=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender") +success60Rcv=data%>%filter(wakeupfor==60)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver") +success60=rbind(success60Snd,success60Rcv) success60=success60%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]")) +energy60=energy60%>%left_join(success60)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}")) +energy60=energy60%>%mutate(type=factor(type,levels = c("Sender","Receiver"))) -energy60P=ggplot(energy60,aes(x=simkey,y=energy,fill=type))+ + +energy60P=ggplot(energy60%>%dformat,aes(x=simkey,y=energy,fill=type))+ geom_bar(colour="black", stat="identity",position=position_dodge())+ geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+ geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+ geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+ - geom_text(aes(label = paste0(r_(energy),"\n",ovhd_txt), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+ - geom_label(data=success60,aes(label = success_txt, y=80),label.padding=unit(0.3,"lines"),label.r=unit(0.09,"lines"),fill="white",label.size=0,fontface="bold",colour="black",position=position_dodge(0.9))+ + geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+ + geom_label(data=success60%>%dformat(),aes(label = success_txt, y=35),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+ facet_wrap(~wireless)+ - xlab("Policy")+ylab("Energy Consumption (J)")+ - labs(fill="Node type")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,1200)) + xlab(element_blank())+ylab("Energy consumption (J)")+ + labs(fill="Energy:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,1200)) #ggsave("energy-60sec.png",width = 12,height=4.8) energy180=data%>%filter(wakeupfor==180) @@ -41,20 +70,23 @@ energy180Baseline=energy180%>%filter(simkey=="baseline")%>%uncount(nsimkeys,.id= energy180=energy180%>%left_join(energy180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline")) energy180=energy180%>%mutate(ovhd=energy*100/energy_baseline-100) energy180=energy180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),"%)")) -success180=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success=r_(mean(nSend)),type="Sender") +success180Snd=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Sender") +success180Rcv=data%>%filter(wakeupfor==180)%>%filter(isSender!=0)%>%group_by(simkey,wireless,wakeupfor)%>%summarise(success_orig=mean(nSend),success=r_(mean(nSend)),type="Receiver") +success180=rbind(success180Snd,success180Rcv) success180=success180%>%rowwise()%>%mutate(success_txt=paste0("[",success,"]")) +energy180=energy180%>%left_join(success180)%>%rowwise()%>%mutate(infos=paste0(ovhd_txt,"\n{",r_(energy/success_orig),"}")) +energy180=energy180%>%mutate(type=factor(type,levels = c("Sender","Receiver"))) - -energy180P=ggplot(energy180,aes(x=simkey,y=energy,fill=type))+ +energy180P=ggplot(energy180%>%dformat,aes(x=simkey,y=energy,fill=type))+ geom_bar(colour="black",stat="identity",position=position_dodge())+ geom_errorbar(position=position_dodge(0.9),aes(ymin=energy-sd, ymax=energy+sd),width=0.3,size=1)+ geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+ geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+ - geom_text(aes(label = paste0(r_(energy),"\n",ovhd_txt), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+ - geom_label(data=success180,aes(label = success_txt, y=210),label.padding=unit(0.3,"lines"),label.r=unit(0.09,"lines"),fill="white",label.size=0,fontface="bold",colour="black",position=position_dodge(0.9))+ + geom_text(aes(label = paste0(r_(energy),"\n",infos), y= min(energy)/2),fontface="bold",colour="white",position=position_dodge(0.9))+ + geom_label(data=success180%>%dformat(),aes(label = success_txt, y=100),label.padding=unit(0.35,"lines"),label.r=unit(0.09,"lines"),fill="#f0f0f0",label.size=0.5,fontface="bold",colour="black",position=position_dodge(0.9))+ facet_wrap(~wireless)+ - xlab("Policy")+ylab("Energy Consumption (J)")+ - labs(fill="Node type")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,2600)) + xlab(element_blank())+ylab("Energy consumption (J)")+ + labs(fill="Energy:")+theme(legend.position="top")+color()+coord_cartesian(ylim=c(0,2600)) #ggsave("energy-180sec.png",width = 12,height=4.8) totalUptime60=data%>%filter(wakeupfor==60) @@ -66,17 +98,17 @@ totalUptime60Baseline=totalUptime60%>%filter(simkey=="baseline")%>%uncount(nsimk totalUptime60=totalUptime60%>%left_join(totalUptime60Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline")) totalUptime60=totalUptime60%>%mutate(ovhd=totalUptime-totalUptime_baseline) totalUptime60=totalUptime60%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")")) +totalUptime60=totalUptime60%>%mutate(type=factor(type,levels = c("Sender","Receiver"))) - -totalUptime60P=ggplot(totalUptime60,aes(x=simkey,y=totalUptime,fill=type))+ - geom_bar(colour="black", linetype="dashed", stat="identity",position=position_dodge())+ +totalUptime60P=ggplot(totalUptime60%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+ + geom_bar(colour="black", stat="identity",position=position_dodge())+ geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+ geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+ geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+ geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+ facet_wrap(~wireless)+ - xlab("Policy")+ylab("Accumulated Uptime Consumption (s)")+ - labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,2500)) + xlab("Policy")+ylab("Accumulated uptime (s)")+ + labs(fill="Total uptime:")+color2()+theme(legend.position="top")+coord_cartesian(ylim=c(0,2500)) totalUptime180=data%>%filter(wakeupfor==180) totalUptime180Snd=totalUptime180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(totalUptime),totalUptime=mean(totalUptime),type="Sender") @@ -87,24 +119,23 @@ totalUptime180Baseline=totalUptime180%>%filter(simkey=="baseline")%>%uncount(nsi totalUptime180=totalUptime180%>%left_join(totalUptime180Baseline,by=c("simkey","wireless","type"),suffix = c("","_baseline")) totalUptime180=totalUptime180%>%mutate(ovhd=totalUptime-totalUptime_baseline) totalUptime180=totalUptime180%>%rowwise()%>%mutate(ovhd_txt=paste0("(",s_(ovhd),r_(ovhd),")")) +totalUptime180=totalUptime180%>%mutate(type=factor(type,levels = c("Sender","Receiver"))) -totalUptime180P=ggplot(totalUptime180,aes(x=simkey,y=totalUptime,fill=type))+ - geom_bar(colour="black", linetype="dashed",stat="identity",position=position_dodge())+ +totalUptime180P=ggplot(totalUptime180%>%dformat,aes(x=simkey,y=totalUptime,fill=type))+ + geom_bar(colour="black",stat="identity",position=position_dodge())+ geom_errorbar(position=position_dodge(0.9),aes(ymin=totalUptime-sd, ymax=totalUptime+sd),width=0.3,size=1)+ geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+ geom_text(aes(label = r_(sd_min), y= sd_min),vjust=+1.5,position=position_dodge(0.9))+ geom_text(aes(label = paste0(r_(totalUptime),"\n",ovhd_txt), y= min(totalUptime)/2),fontface="bold",colour="white",position=position_dodge(0.9))+ facet_wrap(~wireless)+ - xlab("Policy")+ylab("Accumulated Uptime Consumption (s)")+ - labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,5600)) - - + xlab("Policy")+ylab("Accumulated uptime (s)")+ + labs(fill="Total uptime:")+theme(legend.position="top")+color2()+coord_cartesian(ylim=c(0,5600)) success60=data%>%filter(wakeupfor==60) success60=success60%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend)) success60=success60%>%mutate(sd_min=success-sd,sd_max=success+sd) -success60P=ggplot(success60,aes(x=simkey,y=success))+ +success60P=ggplot(success60%>%dformat,aes(x=simkey,y=success))+ geom_bar(stat="identity",position=position_dodge(),fill="gray50")+ geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+ geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+ @@ -119,7 +150,7 @@ success180=data%>%filter(wakeupfor==180) success180=success180%>%filter(isSender==1)%>%group_by(simkey,wireless)%>%summarise(sd=sd(nSend),success=mean(nSend)) success180=success180%>%mutate(sd_min=success-sd,sd_max=success+sd) -success180P=ggplot(success180,aes(x=simkey,y=success))+ +success180P=ggplot(success180%>%dformat,aes(x=simkey,y=success))+ geom_bar(stat="identity",position=position_dodge(),fill="gray50")+ geom_errorbar(position=position_dodge(0.9),aes(ymin=success-sd, ymax=success+sd),width=0.2,size=1)+ geom_text(aes(label = r_(sd_max), y= sd_max),vjust=-0.4,position=position_dodge(0.9))+ @@ -130,9 +161,7 @@ success180P=ggplot(success180,aes(x=simkey,y=success))+ labs(fill="Node type")+theme(legend.position="none")+color()+coord_cartesian(ylim=c(0,13)) #ggsave("success-180sec.png",width = 5.8,height=4.2) -sec60P=grid.arrange(energy60P,totalUptime60P,heights=c(1.3,1),widths=1,ncol=1) -ggsave("60sec.pdf",plot=sec60P,width=12,height=7) -sec180P=grid.arrange(energy180P,totalUptime180P,heights=c(1,1),widths=1,ncol=1) -ggsave("180sec.pdf",plot=sec180P,width=12,height=7) +ggsave("60sec.pdf",plot=(energy60P)/(totalUptime60P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7) +ggsave("180sec.pdf",plot=(energy180P)/(totalUptime180P)+ plot_layout(guides = "collect")&theme(legend.position = "top"),width=12,height=7)