ggplot中的for循环用于多个时间序列,即

Posted

技术标签:

【中文标题】ggplot中的for循环用于多个时间序列,即【英文标题】:For loop in ggplot for multiple time series viz 【发布时间】:2022-01-15 04:37:23 【问题描述】:

我需要在我的数据集中为每个时间序列(列)制作多个单独的图:

https://github.com/rhozon/datasets/raw/master/multiple_time_series_dataset.csv

我想到了一些循环遍历每一列并单独绘制每个图表的 for 循环。

ggplot(df, aes(x = timestamp, 
               y = for loop for each column) ) +
geom_line()

如何通过为数据集的每一列生成时间图来节省时间?

【问题讨论】:

【参考方案1】:

也许这就是你要找的东西

library(tidyverse)
library(lubridate)
library(plotly)
df <- vroom::vroom("https://github.com/rhozon/datasets/raw/master/multiple_time_series_dataset.csv")

df <- df %>% 
  mutate(timestamp = dmy(timestamp))

VARS <- names(df)[-1][1:3]         

map(.x = VARS,
    .f = ~ ggplot(df, aes(x = timestamp, y = .data[[.x]])) +
      geom_line()) %>%
  map(ggplotly)

【讨论】:

很遗憾我没有使用 ggplotly 很棒的@Yuriy Saraykin,但是在这里如何使用ggplotly? 更新解决方案【参考方案2】:

您可以尝试使用 lapply 而不是 for 循环来跟踪代码。

# transforming timestamp in date object
df$timestamp <- as.Date(df$timestamp, format = "%d/%m/%Y")
# create function that is used in lapply
plotlines <- function(variables)
  ggplot(df, aes(x = timestamp, y = variables)) +
  geom_line() 

# plot all plots with lapply
plots <- lapply(df[names(df) != "timestamp"], plotlines) # all colums except timestamp
plots

【讨论】:

以上是关于ggplot中的for循环用于多个时间序列,即的主要内容,如果未能解决你的问题,请参考以下文章

使用 for 循环保存多个 ggplots

R语言使用for循环嵌套ggplot2可视化输出多个可视化结果实战

"for" 循环只添加最后的 ggplot 层

在ggplot中循环变量

在页面上布置多个 ggplot 图

使用for循环中的ggplot绘图不能编译为PDF