【问题标题】:Defining a line between two points on a scatterplot in ggplot在ggplot中定义散点图上两点之间的线
【发布时间】:2018-07-17 23:02:39
【问题描述】:

如果此问题重复,我们深表歉意;在 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 

我想要的是,准确地画一条线,将具有最高 y 值的点与具有最高 x 值的点连接起来。 (这个例子看起来可能是同一点,但在我的真实数据中,发生这种情况的可能性非常小。)

另外,我不只是在情节上画线;我还需要将该行作为公式提供,以便在单独的分析中使用。想法?

【问题讨论】:

  • 我将过滤数据以仅包含这两个点,然后将其用作data 的参数geom_path。这样你也可以用它作为公式做任何你需要的事情

标签: r ggplot2


【解决方案1】:

我会尝试:

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)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多