R: вышележащий график траектории и график рассеяния - PullRequest
0 голосов
/ 29 мая 2018


Я работаю с графиками ggplot2 и траекториями, которые похожи на точечные диаграммы, но с линиями, которые соединяют точки из-за определенного правила.
Моя цель - наложить траекторию на диаграмму рассеяния, и у каждого из них есть разные данные.Прежде всего, данные:

# first dataset
ideal <- data.frame(ideal=c('a','b')
                ,x_i=c(0.3,0.8)
                ,y_i=c(0.11, 0.23))

# second dataset
calculated <- data.frame(calc = c("alpha","alpha","alpha")
                     ,time = c(1,2,3)
                     ,x_c = c(0.1,0.9,0.3)
                     ,y_c = c(0.01,0.26,0.17)
                     )

Создать диаграмму рассеяния с первым легко:

library(ggplot2)
ggplot(calculated, aes(x=x_c, y=y_c)) + geom_point()

После этого я создал график траектории, используя thisполезная ссылка :

library(grid)
library(data.table)

qplot(x_c, y_c, data = calculated, color = calc, group = calc)+ 
  geom_path (linetype=1, size=0.5, arrow=arrow(angle=15, type="closed"))+ 
  geom_point (data = calculated, colour = "red")+
  geom_point (shape=19, size=5, fill="black")

С таким результатом:

enter image description here

Как мне наложить данные ideal наэто траектория сюжета (без траектории конечно они должны быть только точками)?
Заранее спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

qplot обычно не рекомендуется.Вот как вы можете построить два кадра данных.Однако ggplot может работать лучше для вас, если кадры данных объединены, и у вас есть столбец x и y с дополнительным столбцом method, содержащим calculated или ideal.

library(ggplot2)

ideal <- data.frame(ideal=c('a','b')
                    ,x_i=c(0.3,0.8)
                    ,y_i=c(0.11, 0.23)
                    )

# second dataset
calculated <- data.frame(calc = c("alpha","alpha","alpha")
                         ,time = c(1,2,3)
                         ,x_c = c(0.1,0.9,0.3)
                         ,y_c = c(0.01,0.26,0.17)
                         )

ggplot(aes(x_c, y_c, color = "calculated"), data = calculated) + 
  geom_point( size = 5) +
  geom_path (linetype=1, size=0.5, arrow = arrow(angle=15, type="closed"))+ 
  geom_point(aes(x_i, y_i, color = "ideal"), data = ideal, size = 5) + 
  labs(x = "x", y = "y", color = "method")

enter image description here

...