Это действительно проблема получения данных в форме для их построения. Меня немного смущает то, с какими именно данными вы работаете, то есть, что такое b1
, b2
и т. Д. Но с a1
и a2
, которые вы опубликовали (и какими бы то ни было схожими векторами), вы должны поместить все в фрейм данных. Тот факт, что эти векторы имеют разную длину, не имеет значения, потому что ggplot
в любом случае ожидает данные длинной формы. То есть, насколько я могу судить, a1
и a2
содержат разные наборы измерений одного и того же вида вещей (значения запасов, размер организма, вероятность какого-либо результата и т. Д.); поэтому в парадигме tidy-data они должны быть разными группами одной и той же переменной.
Итак, я сначала делаю фрейм / таблицу данных для каждого набора данных, давая им x
, который представляет собой целые числа от 1 до любой длины его вектора a
, а затем присваиваю ему маркер группы, чтобы я мог Держите каждый набор измерений прямо. Затем я связываю это в один фрейм данных.
library(tidyverse)
df1 <- tibble(
a = c(6, 8, 12, 20, 34, 54, 80, 110, 159, 214, 281, 345, 402, 447, 479, 492, 494, 498, 500),
x = 1:length(a),
group = 1
)
df2 <- tibble(
a = c(6, 12, 24, 42, 76, 127, 209, 306, 375, 441, 476, 495, 499, 499, 500),
x = 1:length(a),
group = 2
)
df <- bind_rows(df1, df2)
df
#> # A tibble: 34 x 3
#> a x group
#> <dbl> <int> <dbl>
#> 1 6 1 1
#> 2 8 2 1
#> 3 12 3 1
#> 4 20 4 1
#> 5 34 5 1
#> 6 54 6 1
#> 7 80 7 1
#> 8 110 8 1
#> 9 159 9 1
#> 10 214 10 1
#> # ... with 24 more rows
Способ ggplot
состоит в том, чтобы отобразить переменные на эстетику, такую как цвет. Если вы обнаружите, что создаете несколько геомов, которые служат по существу одной и той же цели (например, geom_line
для каждого набора наблюдений), вам, вероятно, необходимо изменить свои данные.
ggplot(df, aes(x = x, y = a, color = as.factor(group), group = as.factor(group))) +
geom_line()
Это масштабируется для любого количества наборов наблюдений, которые у вас есть - создавайте меньшие кадры данных для каждого a*
, помечайте их как группу и объединяйте их все вместе.