R-пакет beeswarm генерирует те же x-координаты - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над сценарием, в котором мне нужно вычислить координаты для графика с пчелиным теплом без немедленного построения графика.Когда я использую beeswarm, я получаю x-координаты, которые не являются роями, и более или менее имеют одно и то же значение: enter image description here

Но если я снова создаю тот же график, он роится правильно: enter image description here

И если я использую dev.off (), я снова не получаю роя:

enter image description here

Код, который я использовал:

n <- 250
df = data.frame(x = floor(runif(n, 0, 5)),
                y = rnorm(n = n, mean = 500, sd = 100))

#Plot 1:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)

#Plot 2:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)

dev.off()

#Plot 3:
A = with(df, beeswarm(y ~ x, do.plot = F))
plot(x = A$x, y=A$y)

Мне кажется, что beeswarm использует что-то вроде текущих параметров сюжета (или как его называют) для роения и поэтому задыхается, когда сюжет не отображается,Я попытался поиграться с параметрами теплого пчела, такими как интервал, разрывы, загон, загон, приоритет и xlim, но это не имеет значения.К вашему сведению: если для do.plot установлено значение TRUE, x-координаты рассчитываются правильно, но это бесполезно, поскольку я не хочу строить график немедленно.

Любые советы или комментарии приветствуются!

1 Ответ

0 голосов
/ 27 июля 2018

Ты прав; beeswarm использует текущие параметры графика, чтобы вычислить расстояние между точками. Кажется, что настройка "do.plot = FALSE" не делает то, что можно было ожидать, и я не уверен, почему я включил этот параметр.

Если вы хотите управлять параметрами вручную, вы можете использовать функции swarmx или swarmy. Эти функции должны применяться к каждой группе отдельно, например,

dfsplitswarmed <- by(df, df$x, function(aa) swarmx(aa$x, aa$y, xsize = 0.075, ysize = 7.5, cex = 1, log = ""))

dfswarmed <- do.call(rbind, dfsplitswarmed)

plot(dfswarmed)

В этом случае я устанавливаю значения xsize и ysize на основе того, что функция будет использовать по умолчанию для этого конкретного набора данных. Если вы можете найти набор значений xsize / ysize, которые подходят для ваших данных, этот подход может работать для вас.

В противном случае, возможно, более простым подходом было бы оставить do.plot = TRUE, а затем отбросить графики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...