Как изобразить наблюдаемые и смоделированные временные ряды как линии и точки в ggplot? - PullRequest
1 голос
/ 16 апреля 2020

У меня есть временные ряды из 4 смоделированных переменных с 4 наблюдаемыми переменными (наблюдаемые переменные имеют меньше данных, чем смоделированные переменные), как указано в следующей ссылке: https://www.dropbox.com/s/sumgi6pqmjx70dl/nutrients2.csv?dl=0

Я использовал следующий код, данные хранятся в объекте «data 2»

data2 <- read.table("C:/Users/Downloads/nutrients2.csv", header=T, sep=",")

library(lubridate)
data2$Date <- dmy(data2$Date)

library(reshape2)
data2 <- melt(data2, id=c("Date","Type"))

seg2 <- ggplot(data = data2, aes(x = Date, y = value, group = Type, colour = Type)) +
        geom_line() +
        facet_wrap(~ variable, scales = "free") 
seg2

Это дает график (все переменные в строке) Полученный график

Мне нужны данные наблюдений в точках, а не в прерывистых линиях, как в этом примере Требуемый график

Как получить такой график в ggplot (смоделированные переменные в строке и наблюдаемые переменные в точках или точках)?

1 Ответ

0 голосов
/ 16 апреля 2020

Одним из возможных решений является подмножество вашего набора данных для geom_line и geom_point, чтобы использовать только данные sim и obs соответственно.

Затем, если вы передадите shape = Type в aes, вы можете удалить точки для sim данных в легенде, используя scale_shape_manual:

(Примечание: я использовал * Функция 1013 * из пакета data.table, поскольку я считаю ее более эффективной для большого набора данных, чем функция melt reshape2)

library(lubridate)
df$Date <- dmy(df$Date)

library(data.table)
dt.m <- melt(setDT(df),measure = list(c("Nitrate","Ammonium","DIP","Chla")), value.name = "Values", variable.name = "Element")

library(ggplot2)
ggplot(dt.m, aes(x = Date, y = Values, group = Type, color = Type, shape = Type))+
  geom_line(data = subset(dt.m, Type == "sim"))+
  geom_point(data = subset(dt.m, Type == "obs"))+
  scale_shape_manual(values = c(16,NA))+
  facet_wrap(~Element, scales = "free")

enter image description here

...