#r #ggplot2 #plotly #data-visualization #r-plotly
#r #ggplot2 #plotly #визуализация данных #r-plotly
Вопрос:
Я пытаюсь воспроизвести код, показанный на этой странице, в частности, тот, который называется «Сочетание глаголов манипулирования данными и визуализации».
Я буквально просто скопировал код и внес несколько незначительных изменений, чтобы заставить его работать ( plot_ly
теперь требуется, чтобы на имена столбцов ссылались с помощью «~» и т.д.). Однако мой график выглядит совсем по-другому:
Я просмотрел аннотации в plot_ly, но похоже, что точка должна быть жестко запрограммирована, вместо того, чтобы иметь возможность использовать filter
автоматически, как это сделал автор. (Если я не недопонимаю.) Это то, что я использую:
p4 <- plot_ly(economics, x = economics$date, y = economics$uempmed)
p4 %>%
add_trace(y = fitted(loess(economics$uempmed ~ as.numeric(economics$date)))) %>%
add_lines(x = economics$date, y = economics$uempmed) %>%
layout(title = "Median duration of unemployment (in weeks)",
showlegend = FALSE) %>%
dplyr::filter(economics$uempmed == max(economics$uempmed)) %>%
layout(annotations = list(x = economics$date, y = economics$uempmed, text = "Peak", showarrow = T))
Я ожидал, что это будет выглядеть так, как на веб-сайте (ниже), но похоже, что текст аннотации просто рассылается по всей строке вместо того, чтобы просто оставаться на максимуме:
Как это должно выглядеть
Кто-нибудь может сказать мне, что я делаю не так?
Ответ №1:
Почему бы не предварительно вычислить пик, прежде чем помещать его в цепочку
peak <- dplyr::filter(economics, uempmed == max(uempmed))
p4 %>%
add_trace(y = fitted(loess(economics$uempmed ~ as.numeric(economics$date)))) %>%
add_lines(x = economics$date, y = economics$uempmed) %>%
layout(title = "Median duration of unemployment (in weeks)",
showlegend = FALSE) %>%
layout(annotations = list(x = peak$date, y = peak$uempmed, text = "Peak", showarrow = T))