Smyčky sloupce a pozemku vlastní stejný typ sloupce na stejném pozemku pomocí ggplot2

0

Otázka

Vzhledem k datové části rámců df1 a df2 takto:

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))

Děj časové řady pro 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:

enter image description here

Teď doufám, že se smyčka všechny sloupce, ale na základě df2, což znamená, že pro každý columns, pokud je jeho type jsou totožné, pak pozemek je na stejném pozemku a konečně uložit je s názvem type.

Pro dataset df1konečně budeme vytvářet tři pozemky: price.png, quantity.png a pct_change.png.

Jak jsem mohl dosáhnout, že na základě kódu výše? Upřímné díky v předstihu.

ggplot2 r
2021-11-24 04:40:27
1

Nejlepší odpověď

2

Myslím, že něco takového by měla dělat, co chcete. (Ale za chvíli běžím do chybová s ggsave , která by měla být stanovena vzhledem používám ggplot2 3.3.5?) Doufejme, že to funguje pro ostatní.

# add "type" variable to df1.m
df1.m2 = merge(df1.m, df2, by.x = "variable", by.y = "columns")

# for each "type", filter the data to that type, plot, and save    
for(my_type in unique(df1.m2$type)) {
  g <- ggplot(data = df1.m2[df1.m2$type == my_type,],
       aes(x=date, y = value, colour=variable)) +
  geom_line(size = 1, alpha = 1) 
  ggsave(paste0(my_type,".png"))
}
2021-11-24 05:16:52

Díky, já používám ggplot2 3.3.5 stejně, jsem schopen ušetřit pozemky bez jakékoliv chyby.
ah bon

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................