Я постоянный и счастливый пользователь geom_quasirandom
из пакета ggbeeswarm
для создания диаграмм рассеяния, где X является фактором. Тем не менее, я думаю, что некоторые недавние обновления или что-то, что я делаю, вызывают странное поведение при раскрашивании точек. Тот же скрипт не так давно возвращал красивую фигуру.
Воспроизводимый пример:
library(ggbeeswarm)
# this is correctly placing the dots:
ggplot(mtcars, aes(x=factor(gear), y=drat)) +
geom_quasirandom()
# but when colouring dots by a factor, some of the dots get ligned up vertically,
# instead of being placed in a violin-like shape
ggplot(mtcars, aes(x=factor(gear), y=drat, color=factor(cyl))) +
geom_quasirandom()
# (notice particularly the third group of dots, see screenshot below)
# mysteriously, the width argument does not apply to these three dots ligned up vertically
# e.g. command below does not move these dots
ggplot(mtcars, aes(x=factor(gear), y=drat, color=factor(cyl))) +
geom_quasirandom(width=1)
Вы можете помочь?
Ах, group=1
решает! Скорее всего, это не ожидаемое поведение (отметил его здесь: github.com/eclarke/ggbeeswarm/issues/83), но с удовольствием приму ответ здесь, если вы опубликуете его.
Чтобы раскрасить ваши точки, не влияя на позиционирование, вы должны явно установить group
aes, чтобы все точки рассматривались как одна группа с использованием group=1
или путем группировки только по переменной оси x (можно было бы ожидать, что это имеет значение, но выглядит так не важно):
library(ggbeeswarm)
#> Loading required package: ggplot2
ggplot(mtcars, aes(x = factor(gear), y = drat, color = factor(cyl), group = 1)) +
geom_quasirandom()
ggplot(mtcars, aes(x = factor(gear), y = drat, color = factor(cyl), group = factor(gear))) +
geom_quasirandom()
Автор ggbeeswarm здесь - это поведение является ошибкой в версии 0.7.1 и должно быть исправлено в версии 0.7.2, которую я только что отправил в CRAN. Пожалуйста, дайте мне знать, если это останется проблемой!
Теперь, когда вы являетесь участником, stackoverflow стал еще богаче. Спасибо за ваш замечательный пакет, я использую его регулярно.
Возможно, вы хотите
aes(..., group = 1)
раскрасить точки, не влияя на группировку? Но да:ggbeeswarm
недавно обновился. И это было крупное обновление с, вероятно, большим количеством изменений.