Отметьте определенные точки geom_jitter() с помощью ggplot2

при использовании этого кода:

t1 <- ggplot(mtcars, aes(x=as.factor(cyl),y=mpg))
t2 <- geom_boxplot(outlier.shape=NA)
t3 <- geom_jitter(width=0.3, size=1.5, aes(color = disp))
t4 <- scale_colour_gradient(low="blue",high="red")
t5 <- geom_text(aes(label=ifelse(mpg > 30,as.character(mpg),'')))

t1 + t2 + t3 + t4 + t5

Я получаю коробочную диаграмму в сочетании с точками дрожания. Однако я также могу маркировать точки интереса: маркировка не рядом с конкретной точкой, а скорее в вертикальной середине диаграммы.

Вот рисунок

Любая идея, как я могу разместить текст рядом с соответствующей точкой?

Большое спасибо, ребята!

Кстати: можете ли вы порекомендовать мне курс или учебник для начинающих ggplot2?


person choco.latte    schedule 27.04.2016    source источник
comment
Эта тема должна дать вам несколько советов: stackoverflow.com/questions/6551147/   -  person bVa    schedule 27.04.2016
comment
У меня вопрос по выбору сюжета. Как следует читать горизонтальное дрожание точек, учитывая, что ось x представляет собой коэффициент с 4,6 и 8 как единственные уникальные значения? Просто интересно!1   -  person Gaurav Taneja    schedule 27.04.2016


Ответы (1)


Пошевелиться заранее?

library(ggplot2)
set.seed(1)
t1 <- ggplot(transform(mtcars, xjit=jitter(as.numeric(as.factor(cyl)))), aes(x=as.factor(cyl),y=mpg))
t2 <- geom_boxplot(outlier.shape=NA)
t3 <- geom_point(size=1.5, aes(x=xjit, color = disp))
t4 <- scale_colour_gradient(low="blue",high="red")
t5 <- geom_text(aes(x=xjit, label=ifelse(mpg > 30,as.character(mpg),'')), vjust = 1)

t1 + t2 + t3 + t4 + t5

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

person lukeA    schedule 27.04.2016
comment
Спасибо lucA. Поскольку я все еще считаю себя новичком в R, я должен спросить вас о некоторых изменениях в коде, который вы сделали. Не могли бы вы рассказать мне, почему вы использовали преобразование в строке t1 и что преобразование делает с остальным кодом? Я тоже не понимаю, что такое xjit, и что в строке t3 color=disp делает (что такое disp)? Извините за все вопросы... - person choco.latte; 27.04.2016
comment
Конечно. Я использовал transform для создания нового столбца xjit на лету, то есть просто для графика, без сохранения другой переменной где-то в среде R. xjit — это искаженное-значение x. color=disp исходит из вашего примера - он сопоставляет столбец disp с цветовой эстетикой. - person lukeA; 27.04.2016