is it possible to manually add breaks and labels to the secondary y-axis using ggplot2?
(see bottom right)
I want more compact breaks on the right y-axis, representing the bars.
is it possible to manually add breaks and labels to the secondary y-axis using ggplot2?
(see bottom right)
I want more compact breaks on the right y-axis, representing the bars.
This graph will be the base case, then I'll show how to change breaks and labels on the secondary y-axis:
sapply(c("pipeR", "ggplot2"), require, character.only = TRUE)
data(swiss)
swiss %>>% ggplot() +
geom_bar(mapping = aes(x = Agriculture, y = Fertility * 30 / 400), stat = "identity", colour = gray(0.5), fill = gray(0.5)) +
geom_line(mapping = aes(x = Agriculture, y = Education)) +
geom_point(mapping = aes(x = Agriculture, y = Education), size = 3, shape = 21, fill = "white") +
scale_x_continuous() +
scale_y_continuous(
name = expression("Education"),
sec.axis = sec_axis(~ . * 400 / 30 , name = "Fertility"),
limits = c(0, 30)) +
theme_bw() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
Change the breaks:
swiss %>>% ggplot() +
geom_bar(mapping = aes(x = Agriculture, y = Fertility * 30 / 400), stat = "identity", colour = gray(0.5), fill = gray(0.5)) +
geom_line(mapping = aes(x = Agriculture, y = Education)) +
geom_point(mapping = aes(x = Agriculture, y = Education), size = 3, shape = 21, fill = "white") +
scale_x_continuous() +
scale_y_continuous(
name = expression("Education"),
sec.axis = sec_axis(~ . * 400 / 30 , name = "Fertility", breaks = seq(1,1000,10)),
limits = c(0, 30)) +
theme_bw() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
Change labels:
swiss %>>% ggplot() +
geom_bar(mapping = aes(x = Agriculture, y = Fertility * 30 / 400), stat = "identity", colour = gray(0.5), fill = gray(0.5)) +
geom_line(mapping = aes(x = Agriculture, y = Education)) +
geom_point(mapping = aes(x = Agriculture, y = Education), size = 3, shape = 21, fill = "white") +
scale_x_continuous() +
scale_y_continuous(
name = expression("Education"),
sec.axis = sec_axis(~ . * 400 / 30 , name = "Fertility", breaks = seq(1,1000,10), labels=rep("x",length(seq(1,1000,10)))),
limits = c(0, 30)) +
theme_bw() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
Useful link: https://whatalnk.github.io/r-tips/ggplot2-secondary-y-axis.nb.html