【问题标题】:How to plot multiple series/lines in a time series using plotly in R?如何在 R 中使用 plotly 在时间序列中绘制多个系列/线?
【发布时间】:2017-06-13 13:01:30
【问题描述】:

我有一个几年的时间序列,我需要使用 plot_ly 在 x 轴上绘制 mm/dd 并在 y 轴上绘制多年。我在这里生成了一个示例数据:

date<-seq(as.Date("2010-11-22"),as.Date("2016-05-26"),by ="days")
sales = runif(2013, 2000, 6000)
df = data.frame(date,sales)

我绘制了这个数据并得到了这个:

plot_ly(df,x= ~date) %>% add_lines(y = ~sales,color=I("red"))

现在,我尝试使用 plot_ly 绘制多个 y 轴:

plot_ly(df, x = ~date) %>% add_lines(y = ~sales, 
df$date <= "2010-12-31",color=I("red")) %>% 
             add_lines(y = ~sales, df$date <= "2013-12-31" & 
             df$date >= 2013-01-01, color = I("green"))

但我的剧情错了:

这有什么错误?

我想要这样的情节:

【问题讨论】:

  • 你的意思是多个系列(而不是y轴);对吗?
  • 就像上一张图​​片一样,x 轴上的 mm/dd 与不同颜色的每年的销售额。

标签: r ggplot2 time-series plotly timeserieschart


【解决方案1】:

要在同一个图表上创建不同的线,我们必须将dfplotly::group_by 分组。在您的情况下,这是使用 lubridate 按年份拆分来实现的:

library(plotly)
library(lubridate)
date <- seq(as.Date("2010-11-22"), as.Date("2016-05-26"), by = "days")
# Add some variations to distinguish lines
sales <-  runif(2013, 10, 20) + year(date) * 5 + yday(date) / 5
df <-  data.frame(date, sales)


df %>% 
  mutate(year = year(date)) %>% 
  group_by(year) %>% 
  plot_ly(x = ~ yday(date)) %>% 
  add_lines(y = ~ sales, 
            color = ~ factor(year)
            ) 

【讨论】:

猜你喜欢
  • 2021-02-28
  • 2019-12-21
  • 2021-01-10
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多