0

I am using the R programming language. Using the following tutorial : https://plotly.com/r/time-series/ and this stackoverflow question : How to plot multiple series/lines in a time series using plotly in R? I was able to make an interactive time series plot:

library(xts)
library(ggplot2)
library(dplyr)
library(plotly)
library(lubridate)

#time series 1
date_decision_made = seq(as.Date("2014/1/1"), as.Date("2016/1/1"),by="day")

property_damages_in_dollars <- rnorm(731,100,10)

final_data <- data.frame(date_decision_made, property_damages_in_dollars)

final_data %>%
  mutate(date_decision_made = as.Date(date_decision_made)) %>%
  add_count(week = format(date_decision_made, "%W-%y"))

final_data$class = "time_series_1"


#time series 2
date_decision_made = seq(as.Date("2014/1/1"), as.Date("2016/1/1"),by="day")

date_decision_made <- format(as.Date(date_decision_made), "%Y/%m/%d")

property_damages_in_dollars <- rnorm(731,10,10)

final_data_2 <- data.frame(date_decision_made, property_damages_in_dollars)

final_data_2 %>%
  mutate(date_decision_made = as.Date(date_decision_made)) %>%
  add_count(week = format(date_decision_made, "%W-%y"))

final_data_2$class = "time_series_2"

#combine
data = rbind(final_data, final_data_2)
data$class = as.factor(data$class)


a = data  %>% 
    
    group_by(class) %>% 
    plot_ly(x = ~ yday(date_decision_made)) %>% 
    add_lines(y = ~ property_damages_in_dollars, 
              color = ~ factor(class)
    ) 

enter image description here

However, I am having trouble adding custom titles and axis to this graph:

with_titles = data  %>% 
    
    group_by(class) %>% 
    plot_ly(x = ~ yday(date_decision_made)) %>% layout(title = 'damages vs time', xaxis = 'time', yaxis = 'damage') %>%
    add_lines(y = ~ property_damages_in_dollars, 
              color = ~ factor(class)
    ) 

 with_titles

Error: $ operator is invalid for atomic vectors

A similar error is produced when trying to change the x-axis of this graph :

with_titles_and_axis = data  %>% 

group_by(class) %>% 
plot_ly(x = ~ yday(date_decision_made)) %>% layout(title = 'damages vs time', xaxis = xaxis =list(type="date",
               tickformat='%d/%m/%Y',
               showticklabels='True',
                tick0= "2014-01-01",
                dtick= "M12"), yaxis = 'damage') %>%
add_lines(y = ~ property_damages_in_dollars, 
          color = ~ factor(class)
) 

#source: https://community.plotly.com/t/plotly-time-series-forecasting-modify-default-x-axis-and-y-axis-range/11390/2

Can someone please tell me what I am doing wrong? Is it also possible to display the date over the hover text? Thanks

stats_noob
  • 5,401
  • 4
  • 27
  • 83

1 Answers1

0

I just figured out how to change the date to a more standard format:

a = data  %>% 
    
    group_by(class) %>% 
    plot_ly(x = ~ (date_decision_made)) %>% 
    add_lines(y = ~ property_damages_in_dollars, 
              color = ~ factor(class)
    ) 

enter image description here

Now, I have to figure out how to change the titles/axis, as well as make the date appear during the hover text

stats_noob
  • 5,401
  • 4
  • 27
  • 83
  • 1
    the `layout` arguments should be lists: `layout(title = list(text = 'damages vs time'), xaxis = list(text = 'time'), yaxis = list(text = 'damage'))` – GGamba Jan 07 '21 at 10:36
  • thank you for your reply! I tried the following code: a = data %>% group_by(class) %>% plot_ly(x = ~ (date_decision_made)) %>% layout(title = list(text = 'damages vs time'), xaxis = list(text = 'time'), yaxis = list(text = 'damage')) %>% add_lines(y = ~ property_damages_in_dollars, color = ~ factor(class) ) .... and i got an error: Error in x %||% p$x$attrs[[1]][["x"]] : argument "p" is missing, with no default .... do you know what I am doing wrong? thanks – stats_noob Jan 07 '21 at 15:14
  • 1
    It works for me, try reload and/or clean your environment – GGamba Jan 07 '21 at 15:47