Недельная линейная диаграмма в R с указанием конца строки - PullRequest
0 голосов
/ 30 января 2020

Мои данные, называемые «x», похожи на следующую структуру:

   type        eow       url seq  metric
1     a 2019-07-06 / page1 /   7 0.07075
2     a 2019-07-13 / page1 /   7 0.07543
3     a 2019-07-20 / page1 /   7 0.07704
4     a 2019-07-27 / page1 /   7 0.07873
5     a 2019-08-03 / page1 /   7 0.07551
6     a 2019-08-10 / page1 /   7 0.08027
7     a 2019-08-17 / page1 /   7 0.07957
8     a 2019-08-24 / page1 /   7 0.07885
9     a 2019-08-31 / page1 /   7 0.07753
10    a 2019-09-07 / page1 /   7 0.07034

На основе этих данных я создал вывод ggplot, чтобы обернуть его в оператор renderPlotly в приложении Shiny, используя код:

ggplot() + 
  geom_line(data = x, aes(x=eow, y=metric, color=url), size = 1, show.legend = TRUE) +
  geom_text(data = subset(x, eow == max(eow)), aes(label = seq, colour = url, x = eow, y = metric), hjust = -.9) +
  theme_minimal() +
  scale_size_area() +
  xlab("Week Ending") +
  theme(legend.position = "right", axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_x_date(date_breaks = "2 weeks", labels = date_format("%m/%d/%Y")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) 

Однако, когда я добавляю дополнительные диаграммы на диаграмму, метки данных перекрываются и графически не поддерживают ggrepel. Я перешел на график, но я не могу заставить метки оси X отображаться по неделям и с интервалом в две недели, а также не отображать метку данных в конце каждой строки:

plot_ly(data = x, 
        x = ~eow, 
        y = ~metric,
        color = ~url,
        type = 'scatter',
        mode = "lines",
        textposition = 'top center') %>%
  layout(
    xaxis = list(
      autotick = FALSE,
      dtick = "W2",
      type = 'week',
      tickformat = "%m/%d/%Y"
    ))

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 30 января 2020

Будет ли добавление tickmode = 'array' работать?

library(plotly)

x <-"   type        eow       url seq  metric
     a 2019-07-06   page1     7 0.07075
     a 2019-07-13   page1     7 0.07543
     a 2019-07-20   page1     7 0.07704
     a 2019-07-27   page1     7 0.07873
     a 2019-08-03   page1     7 0.07551
     a 2019-08-10   page1     7 0.08027
     a 2019-08-17   page1     7 0.07957
     a 2019-08-24   page1     7 0.07885
     a 2019-08-31   page1     7 0.07753
     a 2019-09-07   page1     7 0.07034"

x <- read.table(text = x, header = TRUE)

plot_ly(data = x, 
        x = ~eow, 
        y = ~metric,
        color = ~url,
        type = 'scatter',
        mode = "lines",
        textposition = 'top center') %>%
  layout(
    xaxis = list(
      autotick = FALSE,
      dtick = "W2",
      type = 'week',
      tickmode = 'array',
      tickformat = "%m/%d/%Y"
    )) 
...