Если вы не полагаетесь на ggboxplot()
, есть решение с базовым графиком.
boxplot(Value ~ Group, df1, xlim=c(.4, 3.5),
xlab="Group", ylab="Value")
points(df1$time/100*3.5, df1$Value, pch=16)
axis(3, seq(0, 3.5, length.out=11), 0:10*10)
mtext("time", 3, 3)
Пояснение
Мысначала создайте нормальный блокпост и немного увеличьте ось Y с xlim()
влево (в противном случае начинается с 0,5).Затем мы накладываем график на points()
, масштабируя вторичную ось X ("time"
) до диапазона [0, 3,5] оси X прямоугольника.Затем мы добавляем ось и помечаем ее, и, наконец, добавляем метку для вторичной оси x с mtext()
.
Результат
Данные
df1 <- structure(list(ID = c("A1", "A2", "A3", "B1", "B2", "B3", "C1",
"C2", "C3"), Group = c("A", "A", "A", "B", "B", "B", "C", "C",
"C"), Value = c(21L, 79L, 32L, 105L, 44L, 58L, 32L, 66L, 143L
), time = c(10L, 20L, 30L, 40L, 50L, 60L, 70L, 80L, 90L)), class = "data.frame", row.names = c(NA,
-9L))