У меня есть некоторые биологические данные для двух людей, и я рисую их, используя R в качестве диаграммы рассеяния, используя ggplot следующим образом:
p1<-ggplot(data, aes(meth_matrix$sample1, meth_matrix$sample3)) +
geom_point() +
theme_minimal()
который работает отлично, но я хочу добавить к нему строки: аблайн, который делит диаграмму рассеяния пополам:
p1 + geom_abline(color = "blue")
и мой вопрос: как я могу нарисовать две красные линии, параллельные этой диагонали (точка пересечения y будет равна 0,2, наклон будет таким же, как у синей линии) ??
Также: как я могу с помощью ggplot нарисовать разницу обоих образцов на аналогичной диаграмме рассеяния (она будет выглядеть как горизонтальная диаграмма рассеяния)? прямо сейчас я могу сделать это только с сюжетом вроде:
dif_samples<-meth_matrix$sample1- meth_matrix$sample3
plot(dif_samples, main = "difference",
xlab = "CpGs ", ylab = "Methylation ", pch=19)
(также я хотел бы добавить горизонтальную синюю линию и красные линии, параллельные синей линии)
Пожалуйста помоги!!!
Большое спасибо.





Вы можете указать уклоны и пересечения в функции geom_abline(). Я буду использовать набор данных iris, который поставляется с ggplot2, чтобы проиллюстрировать:
# I'll use the iris dataset. I normalise by dividing the variables by their max so that
# a line through the origin will be visible
library(ggplot2)
p1 <- ggplot(iris, aes(Sepal.Length/max(Sepal.Length), Sepal.Width/max(Sepal.Width))) +
geom_point() + theme_minimal()
# Draw lines by specifying their slopes and intercepts. since all lines
# share a slope I just give one insted of a vector of slopes
p1 + geom_abline(intercept = c(0, .2, -.2), slope = 1,
color = c("blue", "red", "red"))

Я не совсем понимаю, что вы хотите для второго графика, но вы можете отобразить различия непосредственно при вызове ggplot(), и вы можете добавить горизонтальные линии с помощью geom_hline():
# Now lets plot the difference between sepal length and width
# for each observation
p2 <- ggplot(iris, aes(x = 1:nrow(iris),
y = (Sepal.Length - Sepal.Width) )) +
geom_point() + theme_minimal()
# we'll add horizontal lines -- you can pick values that make sense for your problem
p2 + geom_hline(yintercept = c(3, 3.2, 2.8),
color = c("blue", "red", "red"))

Создано 21.03.2018 пользователем пакет REPEX (v0.2.0).
Большое спасибо! это именно то, что я хотел сделать