With sample data:
df <- structure(list(date = c("2021-10-1", "2021-10-2", "2021-10-3",
"2021-10-4", "2021-10-5", "2021-10-6", "2021-10-7", "2021-10-8",
"2021-10-9", "2021-10-10", "2021-10-11", "2021-10-12", "2021-10-13",
"2021-10-14"), value = c(190.3, 174.9, 163.2, 168.4, 168.6, 168.2,
163.5, 161.6, 172.9, 166.5, 175.2, 197.7, 212.1, 177.9), type = c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L)), class = "data.frame", row.names = c(NA,
-14L))
and code to plot below:
ggplot(data = df,
aes(x=date, y=value, group=type, color = type, fill = type)) +
geom_area(alpha=0.4, position = "identity") +
theme(
text = element_text(size=20),
# plot.margin=unit(c(1, 1, 1.5, 1.2),"cm")
# top, right, bottom, left
# plot.margin=unit(c(0, 1.2, 1.5, 10), "pt")
plot.margin=unit(rep(1, 4),'lines')
) +
scale_y_continuous(breaks = range(df$value)) +
scale_x_date(breaks = range(df$date)) +
geom_hline(yintercept=c(min(df$value), max(df$value)), linetype='solid', col=colors[1]) +
geom_text(aes(label = ifelse(date %in% max(date), as.character(date), ""), y = max(value)), color = colors[3], vjust=-0.2, hjust=1, size=6)
Out:
As you can see, the date in red box is not inside of plot, I've
tried to adjust margin by adding plot.margin=unit(c(1, 1, 1.5, 1.2), "cm")
; plot.margin=unit(c(0, 1.2, 1.5, 10), "pt")
, plot.margin=unit(rep(1, 4),'lines')
, etc., (even negative values) to theme()
, but I didn't success.
I know four values in unit
represent top, right, bottom, left
, but I don't find a way to correctly adjust them.
Someone could help? Sincere thanks at advance.