Добавьте вторичную ось y к графикам ggplot2 - сделайте ее совершенной

Добавление вторичной оси y, масштабированной одной из исходной оси y. Эта тема не нова. Были затронуты времена, например в этом ggplot2 нигерии google. Следуя совету Хэдли, я попытался добавить вторую ось y на geom_vline, geom_segment и geom_text. Но это все еще некрасиво.

Поэтому я попрошу вас о помощи, чтобы сделать ее совершенной. Я думаю, что многие пользователи ggplot2 будут заинтересованы в этой теме и предпочитают любые ваши знания или вклады. Спасибо заранее.

#########################################
# what I have gotten.
library(ggplot2)

# build up a box plot
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 

# add the secondary y axis on right side of the plot
p + geom_boxplot() + geom_vline(xintercept = 3.5) + 
 geom_segment(aes(x=3.49, y=c(7,14,21,28), xend = 3.52, yend = c(7,14,21,28))) +
 geom_text(aes(x=3.55, y=c(7,14,21,28), label=c(7,14,21,28)))

Ответ 1

Чтобы избежать взлома, вы можете использовать facet_grid. В зависимости от ваших данных вы можете настроить его довольно хорошо, чтобы сделать его более общей вторичной осью.

 library(ggplot2)
 ggplot(mtcars, aes(factor(cyl), mpg)) + 
   geom_boxplot() + 
   facet_grid(cyl ~., scales = "free")

enter image description here