использование mfrow в R: как вы даете каждому субплоту разную метку y и одну метку оси x - PullRequest
2 голосов
/ 20 сентября 2019

Я работаю в R, и мне нужно сделать много коробок.Это визуализация групповых различий.Я хочу переименовать ось X, чтобы иметь только один заголовок вместо пяти (по одному на каждый подзаговор).Моя самая большая проблема заключается в том, что я также хочу, чтобы у оси Y всех субплощадок были разные метки.

Это то, что я пробовал до сих пор:

par(mfrow=c(1,5))
lapply(NEW8[,c("gawayf",    "humf", "sgamesf",  "swtoyf",   "kissf")],
       function(x) boxplot(x ~ NEW8$PAPA_p4_adhd,col=rainbow(2),
                           names=c("CN","ADHD"),
                           ylab=c("gawayf", "humf", "sgamesf",  "swtoyf",   "kissf")))

Все метки yдобавляется к каждому субплоту, так что каждый субплот имеет 5 строк меток оси y (gawayf, humf, sgamef, swtoyf, kissf), и на каждом графике указывается, какие данные использовались для создания боксплота (PAPA_P4_ADHD).Я хочу, чтобы на каждом графике была только соответствующая метка оси Y, а на оси X - 1 метка для всех пяти графиков.

Это мой текущий вывод:

enter image description here

Большое спасибо

1 Ответ

0 голосов
/ 20 сентября 2019

Вместо lapply try mapply - это позволит передавать разные аргументы каждому вызову функции:

par(mfrow=c(1,5))
myBox <- function(x, y, ...) boxplot(x ~ y, col=rainbow(2), names=c("CN", "ADHA"), ...)
mapply(myBox,
       x    = NEW8[,c("gawayf",    "humf", "sgamesf",  "swtoyf",   "kissf")],
       y    = list(NEW8$PAPA_p4_adhd),  # we make this a list so it has length(1)
       ylab = c("gawayf", "humf", "sgamesf",  "swtoyf",   "kissf"),
       xlab = ""  # empty x-lab
       )

Для x-lab вам придется проделать трюк - начать новый пустойграфик, который перекрывает все графики и добавляет только ось X:

par(fig=c(0,1,0,1), oma=c(0,0,0,0), mar=par("mar"), new=TRUE)
plot.new()
title(xlab="my x-axis")

ПРИМЕЧАНИЕ. Я не пытался запустить этот код самостоятельно, если что-то здесь не работает - оставьте комментарий ипостараюсь заняться этим.

...