Создание множества линейных графиков с использованием позиций как функции как времени - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь составить единый график траектории многих частиц из эксперимента по броуновскому движению. Есть пять измерений для каждой частицы, всего 10, для x и y компонентов положения.

У меня есть данные в нескольких структурах данных, так как я не знаю, какой из них наиболее полезен для достижения цели, к которой я стремлюсь. 1. Все в пределах одного фрейма данных с моими 5 измерениями времени в x для 16 измеренных частиц, за которыми следуют 16 для компонента y.

Один кадр данных

  1. В двух отдельных фреймах данных, один для x-компонента и один для y.

Я пытался использовать rbind для создания одного массива, который я могу использовать geom_line (), но это означает, что у меня есть одна строка, где каждая траектория частиц связана друг с другом.

Как я мог сделать эти разные линии, все в одной плоскости x-y. Спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Сначала вы должны получить данные в этом формате

data <- data.table(particle = as.factor(rep(1:3, each = 5)),
                   x = sample(-10:10, 15, replace = TRUE),
                   y = sample(-10:10, 15, replace = TRUE))
data

    particle   x   y
 1:        1  -8  -4
 2:        1  -5  -2
 3:        1  -1  -5
 4:        1  -3   9
 5:        1   4  -7
 6:        2   2   1
 7:        2  -8 -10
 8:        2  -4  -8
 9:        2  -6  -4
10:        2  -8  -3
11:        3 -10  10
12:        3   6  -5
13:        3  -5  -6
14:        3  -6   8
15:        3   1  -4

Один столбец для идентификации частицы, а другой - для положения в координатах.

Эта ссылка может помочь вам изменить ваши данные: http://www.cookbook -r.com / Manipulating_data / Converting_data_between_wide_and_long_format /

Тогда просто построите группировку по частицам (используя color aes)

ggplot(data = data,
       aes(x = x, y = y, color = particle)) +
  geom_path(size = 3)

enter image description here

Если вы хотите изменить порядок пути, просто добавьте столбец времени и отсортируйте df по этому столбцу.

1 голос
/ 13 марта 2019

Самый простой способ добиться этого - это иметь 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))
...