дополнительная ось в окне графика в г - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть данные ниже:

df1 <- read.table(text = "ID Group Value time
A1 A 21 10
A2 A 79 20
A3 A 32 30
B1 B 105 40
B2 B 44 50
B3 B 58 60
C1 C 32 70
C2 C 66 80
C3 C 143 90", stringsAsFactors = FALSE, header = TRUE)

С этими данными я строю диаграмму с помощью функции ggboxplot:

library(ggpubr)

ggboxplot(data=df1,x="Group",y="Value",add = "jitter",short.panel.labs = FALSE)

, и мой график выглядит так: enter image description here

Теперь я хотел бы добавить дополнительную ось вверху графика, поместив «точки» на графике, которые необходимо переставить, основываясь на столбце timeв df1 то, что я должен был сделать, выглядит так:

enter image description here

Возможно ли это?

1 Ответ

0 голосов
/ 22 февраля 2019

Если вы не полагаетесь на 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().

Результат

enter image description here

Данные

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))
...