bupaverse / processmapR

Visualize event logs using directed graphs, i.e. process maps.
https://bupaverse.github.io/processmapR/
Other
9 stars 6 forks source link

process_map seems to be rendering incorrectly with dev version of tibble/dplyr #8

Closed zyaar closed 4 years ago

zyaar commented 4 years ago

When using process_map and rendering a graph with the latest version of everything (see sessionInfo() below), the process maps seem to be rendering with text fonts which are too large and activity boxes which are too large (problem_rendering.png):

library(DiagrammeR)
library(bupaR)

process_map(patients)
problem_rendering

However, you can render correctly using the following (at least it looks correct):

library(DiagrammeR)
library(bupaR)

test1 <- process_map(patients, render = FALSE)
render_graph(test1)
correct_render

I believe the problem is in process_map.R file, starting at line 324:

        # Since DiagrammeR does not support the necessary GraphViz attributes,
        # we use a workaround to add them tot the DOT code. See the issue logged here:
        # https://github.com/rich-iannone/DiagrammeR/issues/360

        # hack to add 'weight' attribute to the graph
        graph$edges_df %>%
            mutate(len = weight, decorate = constraint) -> graph$edges_df

        graph %>% render_graph() -> graph

        graph$x$diagram %>%
            stringr::str_replace_all("len", "weight") %>%
            stringr::str_replace_all("decorate", "constraint") -> graph$x$diagram

        attr(graph, "base_precedence") <- base_precedence

        graph %>% return()

I am not sure this code works correctly with the latest version of DiagrammeR (or maybe some other packages that DiagrammeR depends on).

Unfortunately, the workaround fix doesn't help me because I use processanimateR to render the graphs in order to get the token animation.

My sessionInfo is below:

R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C                           LC_TIME=English_United States.1252    

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

other attached packages:
[1] processanimateR_1.0.1  DiagrammeR_1.0.0       petrinetR_0.2.1.9000   processmonitR_0.1.0    xesreadR_0.2.3.9000    processmapR_0.3.3.9000 eventdataR_0.2.0.9000  edeaR_0.8.3           
[9] bupaR_0.4.2           

loaded via a namespace (and not attached):
 [1] zoo_1.8-6           tidyselect_0.2.5    purrr_0.3.3         ggthemes_4.2.0      lattice_0.20-38     V8_2.3              colorspace_1.4-1    vctrs_0.2.0.9007    miniUI_0.1.1.1     
[10] htmltools_0.4.0     viridisLite_0.3.0   yaml_2.2.0          XML_3.98-1.20       plotly_4.9.1        rlang_0.4.2         later_1.0.0         pillar_1.4.2.9001   glue_1.3.1         
[19] DiagrammeRsvg_0.1   RColorBrewer_1.1-2  lifecycle_0.1.0     stringr_1.4.0       munsell_0.5.0       gtable_0.3.0        visNetwork_2.0.8    htmlwidgets_1.5.1   forcats_0.4.0      
[28] fastmap_1.0.1       httpuv_1.5.2        curl_4.2            Rcpp_1.0.3          xtable_1.8-4        promises_1.1.0      scales_1.1.0        jsonlite_1.6        lobstr_1.1.1       
[37] mime_0.7            ggplot2_3.2.1       hms_0.5.2           digest_0.6.23       stringi_1.4.3       dplyr_0.8.99.9000   shiny_1.4.0         grid_3.5.1          tools_3.5.1        
[46] magrittr_1.5        lazyeval_0.2.2      tibble_2.99.99.9010 crayon_1.3.4        tidyr_1.0.0         pkgconfig_2.0.3     zeallot_0.1.0       xml2_1.2.2          data.table_1.12.6  
[55] lubridate_1.7.4     assertthat_0.2.1    httr_1.4.1          rstudioapi_0.10     R6_2.4.1            igraph_1.2.4.1      shinyTime_1.0.1     compiler_3.5.1     
zyaar commented 4 years ago

One more addition, is seems that doing the following also fixes the rendering issues:

render_graph(test1, layout = "nicely")

zyaar commented 4 years ago

Just a quick update, I think I tracked the problem down to an issue with the latest version of either dplyr or tibble. Specifically:

Renders fine:

tibble_2.1.3
dplyr_0.8.3

Does not render correctly:

tibble_2.99.99.9010
dplyr_0.8.99.9000
gertjanssenswillen commented 4 years ago

Indeed this is caused by the dev-versions of tibble/dplyr. My advice would be to use the CRAN versions. For now it's unclear whether the change impact processmapR, diagrammeR or both (both use dplyr). And the problem with the dev version might be temporary.

I'll check when new versions of these packages are published on CRAN is the problem persist.

gertjanssenswillen commented 4 years ago

Latest dplyr version on CRAN is 0.8.4. Latest tibble version is still 2.1.3. Process map renders fine with these versions, so I'm closing this issue.