Решетка R: добавить текст в диаграмму рассеяния по оси X с учетом группировки - PullRequest
0 голосов
/ 07 октября 2019

У меня есть набор данных со значениями y на две даты x для двух групп gp. Дополнительно у меня есть для каждого из этих значений цифра n, которую я хотел бы добавить на оси X. Вот код для получения данных и рисунок:

set.seed(1234)
data0 <- expand.grid(gp = c("A","B")
                  , x = 1:2
                  )
data0$y <- round(runif(4),2)
data0$n <- round(100*runif(4),0)
data0

#   gp x    y  n
# 1  A 1 0.11 86
# 2  B 1 0.62 64
# 3  A 2 0.61  1
# 4  B 2 0.62 23

xyplot(y ~ x | gp, data=data0
       , panel = function(...) {
           panel.xyplot(...)
           panel.text(1,0.1,86)
           panel.text(2,0.1,64)           
       }
       )

А вот рисунок:

enter image description here

Iхотели бы, чтобы правильные n были на оси x, то есть: n следует добавить на оси x, учитывая группировку gp и x. Есть идеи как с этим справиться?

1 Ответ

1 голос
/ 07 октября 2019

Вы можете использовать subscripts для отслеживания каждой строки в функциях панели.

xyplot(y ~ x | gp, data=data0,#subscripts=TRUE,
       panel = function(x,y,subscripts,...) {
           panel.xyplot(x,y,...)
           panel.text(data0$x[subscripts],0.1,data0$n[subscripts])
       }
)

Возможно, вы захотите отрегулировать место, где вы поместили текст (y = 0,1), чтобы избежать почти чрезмерного вывода данных.

(РЕДАКТИРОВАТЬ: закомментировано subscripts=TRUE, что здесь не нужно.)

...