首页 > 解决方案 > 使用位置作为时间函数创建许多线图

问题描述

我正在尝试从布朗运动实验中绘制许多粒子的轨迹图。对于位置的 x 和 y 分量,每个粒子有 5 次测量,总共 10 次。

我有多个数据结构中的数据,因为我不知道哪个对我的目标最有用。1. 全部在一个数据框中,我在 x 中测量了 16 个粒子的 5 次时间测量值,然后是 y 分量的 16 次测量值。

单个数据框

  1. 在两个单独的数据帧中,一个用于 x 分量,一个用于 y。

我尝试使用 rbind 创建一个可以使用 geom_line() 的数组,但这意味着我只有一条线,其中每个粒子轨迹相互连接。

我怎么能在一个 xy 平面内制作这些不同的线条。谢谢

标签: rggplot2data-visualizationscientific-computing

解决方案


实现这一点的最简单方法是使用 3 列,一列用于常见的 x 分量,一列用于 y,一列用于粒子。为此,您需要将数据转换为长格式:

> df <- data.frame(t=c(1,2,3,4,5), x.1 = c(-1,1,3,4,5), x.2 = c(5,2,1,4,6))
> df
  t x.1 x.2
1 1  -1   5
2 2   1   2
3 3   3   1
4 4   4   4
5 5   5   6
> (df <- tidyr::gather(df, "particle", "y", -t))
   t particle  y
1  1      x.1 -1
2  2      x.1  1
3  3      x.1  3
4  4      x.1  4
5  5      x.1  5
6  1      x.2  5
7  2      x.2  2
8  3      x.2  1
9  4      x.2  4
10 5      x.2  6

然后,使用group参数来geom_line分别绘制它们:

ggplot(df, aes(x = t, y = y)) + geom_line(aes(group = particle, color = particle))

推荐阅读