Маркировка точек на geom_point () на основе уравнения geom_abline () - PullRequest
0 голосов
/ 14 июля 2020

У меня сегодня для тебя забавная задача. Любая помощь будет потрясающей.

У меня есть geom_plot ()

set.seed(1)
list1 <- sample(10, 100, replace = T)
list2 <- sample(7, 100, replace = T)

df <- data.frame(list1, list2)
df

ggplot(data=df, aes(x=list1, y=list2)) + geom_point()

x3 <- c(10,6)
y3 <- c(1,7)

slope3 <- diff(y3)/diff(x3)

intercept3 <- y3[1] - slope*x3[1]

ggplot(data = df, aes(x=list1, y=list2)) +
  geom_point() + 
  geom_abline(data = NULL, intercept = intercept3, slope = slope3, col="red")

В идеале я бы хотел пометить все точки, которые лежат на geom_abline или справа от geom_abline ( Я нарисовал график, я хотел использовать функцию geom_label_repel (), чтобы это выглядело аккуратно, но когда я попробовал это, он просто пометил каждую точку! Если возможно, я также хотел бы дополнительно подгруппировать точки данных на или справа от построенной geom_abline () в будущем на основе других критериев.

Заранее спасибо!

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете попробовать это:

set.seed(1)
list1 <- sample(10, 100, replace = T)
list2 <- sample(7, 100, replace = T)

df <- data.frame(list1, list2)
df

ggplot(data=df, aes(x=list1, y=list2)) + geom_point()

x3 <- c(10,6)
y3 <- c(1,7)

slope3 <- diff(y3)/diff(x3)

intercept3 <- y3[1] - slope3*x3[1]

#Mutate
df$prod <- intercept3+slope3*df$list1
df$label <- ifelse(df$list2>df$prod,'text',NA)

ggplot(data = df, aes(x=list1, y=list2,label=label)) +
  geom_point() + 
  geom_abline(data = NULL, intercept = intercept3, slope = slope3, col="red")+
  geom_text(vjust=-0.5)

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

...