在ggplot中的散点图上定义两点之间的线

时间:2018-07-17 14:42:39

标签: r ggplot2

很抱歉,如果这个问题是重复的;在Stack Overflow上查找“在两点之间画一条线”给了我一些想法,但是我不确定如何将它们应用于我的特定问题。

假设我的数据采用以下形式:

x <- runif(n = 10)
y <- runif(n = 10)
graphData <- data.frame(x, y)
graphData

           x          y
1  0.3328235 0.30122890
2  0.4886130 0.06072057
3  0.9544738 0.94772694
4  0.4829024 0.72059627
5  0.8903502 0.14229430
6  0.9144382 0.54928466
7  0.6087350 0.95409124
8  0.4106898 0.58548335
9  0.1470947 0.40451028
10 0.9352998 0.64789348

然后我对这些数据做一个散点图:

library(ggplot2)
p <- ggplot(graphData, aes(x = x, y = y)) +
  geom_point()
p 

enter image description here

我想要的是精确绘制一条线,将y值最高的点与x值最高的点连接起来。 (该示例使它们看起来可能是同一点,但在我的实际数据中,发生这种情况的几率非常小。)

此外,我不仅在情节上画线,而且还画线。我还需要提供该行作为公式,以用于单独的分析中。有想法吗?

1 个答案:

答案 0 :(得分:4)

我会尝试:

p <- ggplot(graphData, aes(x = x, y = y)) +
    geom_point()+
    geom_smooth(data = . %>% filter(x == max(x) | y == max(y)), method = lm)
p

然后调用该行的公式:

lm(y ~ x, data = graphData %>% filter(x == max(x) | y == max(y)))