【问题标题】:Scatterplot with trajectory across datasets具有跨数据集轨迹的散点图
【发布时间】:2014-10-28 23:50:22
【问题描述】:

我在 R 中使用 ggplot2 创建散点图。我有两种不同条件的 (x,y) 数据集,如下所示:

    x1           y1           x2             y2
1   1.00000000  150.36247   0.50000000  133.27397
2   1.00000000  129.62707   0.50000000  120.79893
3   1.00000000  79.94730    0.62500000  78.98120
4   1.00000000  79.78723    0.62500000  81.93014
5   1.00000000  133.47697   0.72727273  192.86557

我想在同一个绘图上绘制 (x1,y1) 和 (x2, y2),并为数据集中的每一行绘制一条连接这两个点的轨迹线。例如,在上面的示例数据中,将有一条线连接 (1,150) 到 (0.5, 133)(第 1 行的数据),以及一条单独的线连接 (1,129) 和 (0.5, 120)(第 1 行的数据) 2)等等。理想情况下,我还想让每条线都有不同的颜色。

我尝试按照以下说明创建轨迹,但我的数据集中的分组是按列而不是按行:Scatterplot with developmental trajectoriesMaking a trajectory plot using R

目前,我的脚本只是在同一张图上生成两个散点图,但同一行的数据点之间没有联系:

scatter2<-ggplot(data = df, aes(x=x1, y=y1))
+ geom_point(aes(x=x1, y=y1), color="red") 
+ geom_point(aes(x=x2, y=y2), color="blue") 

您能提供的任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: r ggplot2 scatter-plot


    【解决方案1】:

    这可以通过使用geom_segment() 来实现。您可以在这里找到更多信息:http://docs.ggplot2.org/current/geom_segment.html

    我想在这里,你会做类似的事情

    scatter2<-ggplot(data = df, aes(x=x1, y=y1))
      + geom_point(aes(x=x1, y=y1), color="red") 
      + geom_point(aes(x=x2, y=y2), color="blue") 
      + geom_segment(aes(x=x1, y=y1, xend=x2, yend=y2))
    

    【讨论】:

    • 谢谢!作为对此的补充,我还添加了方向性和颜色的箭头:geom_segment(aes(x=x1, y=y1, xend=x2, yend=y2, color=df$dist), arrow=arrow(angle=25, length=unit(0.25, "cm"))) + scale_colour_gradientn(colours=rainbow(4)) 其中 df$dist 是连接点的线的长度
    【解决方案2】:
    DF <- read.table(text="    x1           y1           x2             y2
    1   1.00000000  150.36247   0.50000000  133.27397
    2   1.00000000  129.62707   0.50000000  120.79893
    3   1.00000000  79.94730    0.62500000  78.98120
    4   1.00000000  79.78723    0.62500000  81.93014
    5   1.00000000  133.47697   0.72727273  192.86557", header=TRUE)
    

    整理你的数据:

    DF$id <- seq_len(nrow(DF))
    library(reshape2)
    DF <- melt(DF, id.var="id")
    DF$var <- substr(DF$variable, 1, 1)
    DF$group <- substr(DF$variable, 2, 2)
    DF$variable <- NULL
    DF <- dcast(DF, group + id ~ var)
    

    剧情:

    library(ggplot2)
    ggplot(DF, aes(x=x, y=y)) +
      geom_point(aes(shape=group), size=5) +
      geom_line(aes(colour=factor(id)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2019-04-15
      • 2018-03-26
      • 2018-03-05
      • 2018-10-24
      • 2017-07-19
      • 1970-01-01
      相关资源
      最近更新 更多