library(ggplot2) library (RMySQL) con <- dbConnect(MySQL(), user="*****", password="*****", dbname="be", host="192.168.2.50") rs <- dbSendQuery(con,"select id, day(datum) as dagen, datum, T1_Used, T2_Used, Gas_Used, T1_Produced, T2_Produced, day(datum) as day from meter where datum >= date_sub(date_format(now(), '%Y-%m-%d 00:00:00'), interval 1 month) group by date(datum), day(datum) order by id") data <- fetch(rs,n=-1) # Bepaal het aantal dagen van de afgelopen maand. daysPerMonth <- length(data$id) # dal tarief t1 <- data$T1_Used t1x <- t1 t1 <- t1[2:(daysPerMonth+1)] t1x <- t1x[1:daysPerMonth] t1 <- (t1 - t1x) rm(t1x) # piek tarief t2 <- data$T2_Used t2x <- t2 t2 <- t2[2:(daysPerMonth+1)] t2x <- t2x[1:daysPerMonth] t2 <- (t2 - t2x) rm(t2x) # Bereken het verbruikt deze dag tot op dit moment totaalVerbruik <- 0.0 blnTel <- FALSE for (i in 1:(length(data$dagen)-1)) { if (data$dagen[i] == 1) { blnTel <- TRUE } if (blnTel){ totaalVerbruik <- totaalVerbruik + t1[i] + t2[i] } } # Maak de vectoren aan voor de barplot fase <- c(rep("dal", daysPerMonth), rep("piek",daysPerMonth)) verbruik <- c(t1, t2) dagen <- c(data$dagen[1:daysPerMonth], data$dagen[1:daysPerMonth]) # Creeer hiervan de dataset mydata <- data.frame(fase, dagen, verbruik) # Maak de labels aan vtext = verbruik # Door een afronding kan een hele lage 0 waarde blijven bestaan. Filter die er uit vtext[vtext<0.01]=NA myPlot <- ggplot(data=mydata, aes(x=factor(dagen, levels=data$dagen[1:daysPerMonth]), y=verbruik, fill=fase)) + geom_bar(stat="identity", color="black") + geom_text(aes(label=round(vtext,2)), size=3, vjust=-0.25, position="stack") + scale_fill_manual(values=c("green", "red")) + labs(x="Tijd in dagen van de afgelopen 31 dagen", y="Verbruik in Kwh", title="Verbruik over de laatste 31 dagen", subtitle=paste0("Verbruik vanaf de 1e van de maand ", round(totaalVerbruik,3), " Kwh")) + theme_minimal() path <- "/var/www/html/images/" ggsave(filename="PerMonth.png", device="png", width = 10.6, height=5.1 ,plot=myPlot, path=path, bg="transparent") myPlot all_cons <- dbListConnections(MySQL()) for(con in all_cons) dbDisconnect(con) rm(all_cons)