The good code is :
rm(list = ls())
library(tidyverse)
library(lubridate)
#>
#> Attachement du package : 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
dt<-data.frame(when=as.Date(c("2018-03-20 ","2018-03-21 ","2018-03-23","2018-03-24 ","2018-03-25")),
numinter=c(1,5,4,3,4),
prod=c(0.95,0.5,0.7,0.75,0.60)
)
df<-data.frame(
Time=as.Date(c("2020/01/01", "2020/02/01", "2020/03/01")),
Qte_total=as.numeric(c("780","803","819")),
Qte_total_prio=as.numeric(c("10","23","30")),
Qte_ouverture = as.numeric(c("20","100","5")),
Qte_sortie=as.numeric(c("2","4","10"))
)
df<-df%>%
select(-.data$Qte_total)
p<-data.frame(Time=as.Date(c("2020/01/01", "2020/02/01", "2020/03/01")),
OTD=c(0.1,0.4,0.5))
df.l<-df %>%gather("types", "qte", -Time)
ggplot() +
geom_bar(df.l,mapping = aes(x = Time, y = qte,fill=types),position = "dodge", stat = "identity") +
geom_line(p,mapping = aes(x = Time, y = OTD*max(df.l$qte)), size = 2, color = "blue") +
scale_x_date(name = "Day", labels = NULL) +
scale_y_continuous(name = "Quantité",
sec.axis = sec_axis(~./max(df.l$qte), name = "OTD",
labels = function(b) { paste0(round(b * 100, 0), "%")})) +
theme(
axis.title.y = element_text(color = "grey"),
axis.title.y.right = element_text(color = "blue"))

source :
more explanation here