#r #ggplot2 #cluster-computing
#r #ggplot2 #кластерные вычисления
Вопрос:
У меня есть набор данных о значениях экспрессии РНК в разных выборках. Я применил к ним линейную подгонку и статистику Байеса, а затем построил график изменения логарифмического сгиба («logFC») против «P.Value», чтобы получить следующий ggplot. Теперь я хочу раскрасить значения с помощью «logFC» < -2 или > 2 и значения с помощью «P.Value» <0.05, оба цвета отличаются от остальных значений. Как я могу это сделать?
Ответ №1:
Хотя вы действительно могли бы отображать подмножества данных в виде слоев, вы также могли бы сделать цветовую эстетику вложенным ifelse()
выражением. Вы также получите правильную легенду. Пример ниже:
library(ggplot2)
set.seed(0)
df <- data.frame(
logFC = rt(10000, 10),
pvalue = runif(10000)
)
ggplot(df, aes(logFC, log10(pvalue)))
geom_point(
aes(colour = ifelse(is.na(pvalue) | pvalue > 0.05 | abs(logFC) < 2, "n.s.",
ifelse(logFC >= 2, "Up", "Down")))
)
scale_colour_manual(values = c("limegreen", "grey50", "dodgerblue"),
name = "Category")
scale_y_continuous(trans = "reverse")
Создано 2020-09-17 пакетом reprex (версия 0.3.0)
Ответ №2:
Кажется, вы использовали geom_point
-график для всего вашего набора данных. Один из способов решить ваш вопрос — добавить дополнительные точечные слои с подмножествами.
Вы еще не предоставили пример набора данных, поэтому я использовал набор данных iris. Я изменил цвет меньших и больших значений Sepal.Длина путем подмножества набора данных и добавления точек синим цветом. Кроме того, небольшие значения в Sepal.Ширина получила зеленый цвет.
Чтобы перенести этот код в ваш случай. Отфильтруйте свой набор данных для желаемого LogFC
и / или P.Value
и добавьте эти наборы данных и аргумент цвета в дополнительные geom_point
слои.
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
geom_point(color = "red")
geom_point(data = iris[iris$Sepal.Length < 5 | iris$Sepal.Length > 7, ], color = "blue")
geom_point(data = iris[iris$Sepal.Width < 3, ], color = "green")