Как показать правильную горизонтальную ось в ggplotly, когда это дата - PullRequest
0 голосов
/ 23 марта 2020

Я почти уверен, что это ошибка, и надеюсь в скором времени на обходной путь.

library(tidyverse)
library(plotly)
d <- tibble(
  date = as.Date("2012-01-01") + 0:5000,
  y = rnorm(5001)
)

p <- ggplot(d, aes (x = date, y = y)) + 
  geom_point() 

p

ggplotly(p)

Вот p в том виде, в каком он представлен ggplot2:

enter image description here

Данные корректно go до сентября 2025 года.

Но здесь они представлены графически:

enter image description here

Все данные есть, и всплывающие подсказки правильно обозначают точки справа от этой диаграммы как относящиеся к сентябрю 2025 года, но по оси x они больше похожи на 2022 (на самом деле , это выглядит просто транспонированным четыре или пять лет).

Любой совет на а) если это ошибка или я делаю что-то глупое и б) есть ли обходной путь?

Править добавить sessionInfo ()

> sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)

Matrix products: default

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252    LC_MONETARY=English_Australia.1252
[4] LC_NUMERIC=C                       LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] plotly_4.9.2    forcats_0.5.0   stringr_1.4.0   dplyr_0.8.5     purrr_0.3.3     readr_1.3.1    
 [7] tidyr_1.0.2     tibble_2.1.3    ggplot2_3.3.0   tidyverse_1.3.0

loaded via a namespace (and not attached):
 [1] tidyselect_1.0.0  haven_2.2.0       lattice_0.20-40   colorspace_1.4-1  vctrs_0.2.4       generics_0.0.2   
 [7] htmltools_0.4.0   viridisLite_0.3.0 yaml_2.2.1        rlang_0.4.5       pillar_1.4.3      glue_1.3.1       
[13] withr_2.1.2       DBI_1.1.0         dbplyr_1.4.2      modelr_0.1.6      readxl_1.3.1      lifecycle_0.2.0  
[19] munsell_0.5.0     gtable_0.3.0      cellranger_1.1.0  rvest_0.3.5       htmlwidgets_1.5.1 labeling_0.3     
[25] crosstalk_1.1.0.1 Cairo_1.5-11      fansi_0.4.1       broom_0.5.5       Rcpp_1.0.3        scales_1.1.0     
[31] backports_1.1.5   jsonlite_1.6.1    farver_2.0.3      fs_1.3.2          hms_0.5.3         digest_0.6.25    
[37] stringi_1.4.6     grid_3.6.3        cli_2.0.2         tools_3.6.3       magrittr_1.5      lazyeval_0.2.2   
[43] crayon_1.3.4      pkgconfig_2.0.3   data.table_1.12.8 xml2_1.2.5        reprex_0.3.0      lubridate_1.7.4  
[49] assertthat_0.2.1  httr_1.4.1        rstudioapi_0.11   R6_2.4.1          nlme_3.1-145      compiler_3.6.3  

1 Ответ

1 голос
/ 23 марта 2020

Оказывается, что-то не так между плотно и последней версией ggplot2. Если я вернусь с ggplot2 3.3.0 к 3.2.1, проблема устранится:

devtools::install_version("ggplot2", version = "3.2.1", repos = "http://cran.us.r-project.org")

library(tidyverse)
library(plotly)

d <- tibble(
  date = as.Date("2012-01-01") + 0:5000,
  y = rnorm(5001)
)

p <- ggplot(d, aes (x = date, y = y)) + 
  geom_point() 

ggplotly(p)

enter image description here

Таким образом, обходной путь должен придерживаться ggplot2 3.2 .1 на данный момент и опубликуйте отчет об ошибке для plotly (я не думаю, что мы можем назвать это ошибкой ggplot2, так как она появляется только в точечной интерпретации масштаба).

...