Zdefiniowane ramki danych df1
i df2
w następujący sposób:
df1:
df1 <- structure(list(date = structure(c(1L, 2L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 3L), .Label = c("2021/1/31", "2021/2/1", "2021/2/10",
"2021/2/2", "2021/2/3", "2021/2/4", "2021/2/5", "2021/2/6", "2021/2/7",
"2021/2/8", "2021/2/9"), class = "factor"), value1 = c(9.76,
9.76, 9.88, 9.31, 9.71, 9.56, 9.27, 9.22, 9.21, 9.08, 8.78),
value2 = c(6.84, 6.88, 6.95, 6.65, 6.94, 6.85, 6.66, 6.66,
6.6, 6.5, 6.25), value3 = c(6.33, 6.21, 6.31, 6.2, 6.56,
6.36, 6.36, 6.25, 6.1, 6.02, 5.76), value4 = c(10.68, 10.91,
11, 10.49, 10.8, 10.5, 10.2, 9.85, 10.03, 9.8, 9.51), value5 = c(7.77,
7.84, 7.83, 7.44, 7.83, 7.77, 7.6, 7.46, 7.46, 7.39, 7.29
)), class = "data.frame", row.names = c(NA, -11L))
df2:
df2 <- structure(list(type = structure(c(2L, 2L, 3L, 3L, 1L), .Label = c("pct_change",
"price", "quantity"), class = "factor"), columns = structure(1:5, .Label = c("value1",
"value2", "value3", "value4", "value5"), class = "factor")), class = "data.frame", row.names = c(NA,
-5L))
Wykres szeregów czasowych dla df1
:
library(ggplot2)
library(data.table)
df1$date <- as.Date(df1$date)
df1.m <- melt(df1, id = "date") # convert to long format
ggplot(data = df1.m,
aes(x=date, y = value, colour=variable)) +
geom_line(size = 1, alpha = 1)
ggsave("df1.png")
Z:
Teraz mam nadzieję pętli wszystkie kolumny, ale na podstawie df2
, co oznacza, że dla każdego columns
jeśli go type
są identyczne, a następnie nałóż je na jeden i ten sam teren i, w końcu, zapisz ich nazwy type
.
Dla zbioru danych df1
jesteśmy w końcu сгенерируем trzy grafika: price.png
, quantity.png
i pct_change.png
.
Jak mógłbym osiągnąć na podstawie powyższego kodu? Serdeczne dzięki z góry.
ggplot2 3.3.5
ponadto, mogę zapisywać historie bez żadnych błędów.