У меня есть 36 различных фреймов данных, которые содержат переменные dX и dY. Я сохранил их в списке и хочу отобразить их на одном графике с x = dX и y = dY.Как построить много кадров данных на одном графике с ggplot
36 фреймов данных не имеют одинаковых значений dX. Они примерно охватывают один и тот же диапазон, но не имеют одинаковых значений, поэтому использование слияния создает тонну значений NA. Однако количество строк одинаково.
я пытался что-то уродливое, что почти работает:
g <- ggplot()
for (i in 1:36) {
g <- g + geom_line(data = df.list[[i]], aes(dX, dY, colour = i))
}
print(g)
Это показывает кривые правильно, но цвета не применяются (и не иметь соответствующую легенду). ОК, 36 строк в легенде могут быть непрактичными. В этом случае я бы уменьшил количество строк для рисования.
Второй подход: я попытался спланировать кадры данных следующим образом.
df <- melt(df.list, id.vars = "dX")
ggplot(df, aes(x = dX, y = value, colour = L1)) + geom_line()
Но это создает 4-переменную кадр данных со столбцами: Dx, переменный (всегда равно Dy), значение (здесь являются значениями Dy) и L1, который содержит индекс кадра данных в список.
Вот первые строки расплавленного кадра данных:
dX variable value L1
1 4.952296 dY 6.211485e-05 1
2 6.766889 dY 7.661041e-05 1
3 8.581481 dY 9.550221e-05 1
4 10.396074 dY 1.192053e-04 1
5 12.210666 dY 1.498834e-04 1
6 14.025259 dY 1.883612e-04 1
7 15.839851 dY 2.365646e-04 1
8 17.654444 dY 2.956796e-04 1
9 19.469036 dY 3.662252e-04 1
10 21.283629 dY 4.470143e-04 1
Там есть несколько проблем:
- «переменные» всегда равен д. Я ожидал, что индекс в кадре данных в списке (который хранится в L1) или даже лучше, результат имени функции (i)
- Кривая использует непрерывную шкалу от 1 до 36, а я хотел дискретную шкалу
- Наконец, используя geom_line(), кажется, не рисовать кривые кадры данных по отдельности, но связывает точки разных наборов данных вместе
Любая идея, как решить мой проблема?
Одна из проблем, с которыми вы столкнулись с циклом, - это изменение цвета на основе 'i'. R начнет рециркуляцию цветов после того, как я получу 9 или 10, см. Это для примера: 'plot (1: 20, col = 1: 20, pch = 19)'. Чтобы изменить цвета, вам нужно будет вручную создать вектор цветов для цикла, который вы можете увидеть из 'colors()'. Это вернет все доступные цвета в R – anotherFishGuy
На самом деле это не так, как показано на рисунке после 9 или 10, на графике есть только один цвет ... – Ben
Имеются ли у ваших данных одни и те же имена? Я бы привязал список data.frame к созданию уникального data.frame с столбцом, в котором хранится количество источников данных (от 1 до 36). Тогда я буду строить эти данные с помощью ggplot – cderv