I have plotted a graph with two y-axes. However, the titles of the axes are a little too close to them for my taste. I've managed to distance the primary axis title but can't figure out how to do the same for the secondary axis. Here is the code I've used:
ggplot(data1, aes(x=year))+
geom_line(aes(y= data1$`export share`, colour= "export share"), size = 2)+
geom_line(aes(y=data1$pm25/coeff, colour= "pm25"), size = 2)+
scale_x_continuous(breaks = scales::pretty_breaks(n = 17), name = "Year")+
scale_y_continuous(name="Export Share of GDP", labels = scales::percent, sec.axis=sec_axis(trans = ~.*coeff, name = "PM2.5"))+
theme(axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0)), axis.text.x = element_text(vjust = 5) ,legend.title = element_blank(), legend.box.margin = margin(0,0,0,10), text = element_text(size = 30)) +
scale_colour_discrete("",
breaks=c("export share", "pm25"),
labels=c("Export Share of GDP", "PM2.5")) +
geom_vline(xintercept=2006) +
geom_vline(xintercept = 2000)
You can increase the margin on the right by increasing the second argument of plot.margin
+ theme(plot.margin=unit(c(1,3,1,1), "cm"))
And then increase the vjust
argument of axis.title.y.right
:
+ theme(axis.title.y.right = element_text(vjust=2 or 3 or 4))
Larger numbers for vjust
go further away from the axis. Of course you combine the above two "theme" commands into one.