Вопрос:

ggplot2: Как получить точки для группировки со скрипками?

r ggplot2

32 просмотра

2 ответа

1321 Репутация автора

Я хотел бы построить графики для скрипки, где ось х, exonоднако я хочу сгруппировать графики. Это работает, если его просто скрипит, однако, когда я по какой-то причине добавляю в дрожь, он не отвечает правильно aesи строит графики самостоятельно? Вот воспроизводимый код с снимком экрана ошибки. Спасибо!

set.seed(1)
df <- data.frame(
  exons = c(rep("e1", 200), rep("e2", 200)),
  values = rnorm(400, 200, 40),
  group = c(
    rep("g1", 75), rep("g2", 75), rep("g3", 50),
    rep("g1", 75), rep("g2", 75), rep("g3", 50)
  )
)

ggplot(df, aes(y = values, x = exons, fill = group)) +
  geom_violin() +
  geom_jitter(shape = 16, position = position_jitter(0.07))

поэтому, если график работает, точки должны были быть нанесены в каждой группе для каждого экзона, однако здесь это явно не так.

введите описание изображения здесь

Автор: Ahdee Источник Размещён: 10.08.2019 07:22

Ответы (2)


0 плюса

13 Репутация автора

Вы имеете в виду что-то подобное?

set.seed ( 1)
df = data.frame ( 
  exons = c(rep("e1", 200), rep("e2", 200))
  ,values = rnorm(400,200,40)
  ,group = c(rep("g1", 75), rep("g2", 75), rep("g3",50),
             rep("g1", 75), rep("g2", 75), rep("g3",50) )
)

ggplot(df, aes(y= values  , x= exons , fill = group )) +
  geom_violin()+ 
  geom_jitter(shape=16, position=position_jitter(width = NULL, height = NULL))

Вы можете определить степень дрожания в направлении х и у.

Автор: stefx Размещён: 10.08.2019 07:31

0 плюса

11923 Репутация автора

Вы, вероятно, хотите и то, position_dodge()и другоеposition_jitterdodge()

library(ggplot2)
ggplot(df, aes(y = values, x = exons, fill = group)) +
  geom_violin(position = position_dodge(width = 0.9)) +
  geom_point(position = position_jitterdodge(seed = 1, dodge.width = 0.9))

Еще одна опция, о которой стоит упомянуть, это geom_quasirandom()функция из ggbeeswarmпакета

library(ggbeeswarm)
ggplot(df, aes(y = values, x = exons, fill = group)) +
  geom_violin(position = position_dodge(width = 0.9)) +
  geom_quasirandom(dodge.width = 0.9, varwidth = TRUE)

Создано 2019-08-10 пакетом представлением (v0.3.0)

Автор: Tung Размещён: 11.08.2019 06:59
Вопросы из категории :
32x32