Skip to content

Error in ComplexUpset after ggplot2 4.0.0 update #213

@abichat

Description

@abichat

Description

A major update to ggplot2 (version 4.0.0) is expected around mid-to-late July 2025.

Unfortunately, using it will break ComplexUpset::upset(), I will show it with the first vignette example.

Behaviors

With ggplot2 3.5.2 (runs fine)

# pak::pak("tidyverse/ggplot2@v3.5.2")
library(ComplexUpset)

packageVersion("ggplot2")
#> [1] '3.5.2'
packageVersion("ComplexUpset")
#> [1] '1.3.6'

movies <- as.data.frame(ggplot2movies::movies)
genres <- colnames(movies)[18:24]

upset(movies, genres, name = "genre", width_ratio = 0.1)

Created on 2025-07-09 with reprex v2.1.1

With ggplot2 4.0.0 (warnings and error)

# pak::pak("tidyverse/ggplot2")
library(ComplexUpset)

packageVersion("ggplot2")
#> [1] '3.5.2.9001'
packageVersion("ComplexUpset")
#> [1] '1.3.6'

movies <- as.data.frame(ggplot2movies::movies)
genres <- colnames(movies)[18:24]

upset(movies, genres, name = "genre", width_ratio = 0.1)
#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#> ℹ Please use `linewidth` instead.
#> ℹ The deprecated feature was likely used in the ComplexUpset package.
#>   Please report the issue at
#>   <https://github.com/krassowski/complex-upset/issues>.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> Warning: themes$intersections_matrix is not a valid theme.
#> Please use `theme()` to construct themes.
#> Warning: `legend.margin` must be specified using `margin()`
#> ℹ For the old behavior use `legend.spacing`
#> Warning: themes$intersections_matrix is not a valid theme.
#> Please use `theme()` to construct themes.
#> Warning: selected_theme is not a valid theme.
#> Please use `theme()` to construct themes.
#> Warning: `legend.margin` must be specified using `margin()`
#> ℹ For the old behavior use `legend.spacing`
#> Warning: selected_theme is not a valid theme.
#> Please use `theme()` to construct themes.
#> Warning: themes$overall_sizes is not a valid theme.
#> Please use `theme()` to construct themes.
#> Warning: `legend.margin` must be specified using `margin()`
#> ℹ For the old behavior use `legend.spacing`
#> Warning: themes$overall_sizes is not a valid theme.
#> Please use `theme()` to construct themes.
#> Error in `plot_theme()`:
#> ! The `axis.title.x` theme element must be a <element_text> object.

Created on 2025-07-09 with reprex v2.1.1

The first warning is due to the change from size to linewidth in aesthetic for lines (since ggplot2 3.4.0, but only soft deprecated then).
The following ones are likely due to stricter class checks with the S7 implementation in 4.0.0.

See this post: Bioconductor and ggplot2 4.0.0: What’s Changing and How to Prepare

Conclusion

Do you think a patch will be available soon? It would be greatly appreciated.
Huge thanks for maintaining this package, I use it a lot!

Context

ComplexUpset 1.3.6

R session information
> sessioninfo::session_info()
─ Session info ────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.5.0 (2025-04-11)
 os       macOS Sequoia 15.5
 system   aarch64, darwin20
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Europe/Paris
 date     2025-07-09
 pandoc   NA
 quarto   1.7.29 @ /usr/local/bin/quartoPackages ────────────────────────────────────────────────────────────────────────────────────────────────────
 package       * version    date (UTC) lib source
 cli             3.6.5      2025-04-23 [1] CRAN (R 4.5.0)
 colorspace      2.1-1      2024-07-26 [1] CRAN (R 4.5.0)
 ComplexUpset  * 1.3.6      2025-07-09 [1] Github (krassowski/complex-upset@db1e099)
 crayon          1.5.3      2024-06-20 [1] CRAN (R 4.5.0)
 dplyr           1.1.4      2023-11-17 [1] CRAN (R 4.5.0)
 farver          2.1.2      2024-05-13 [1] CRAN (R 4.5.0)
 generics        0.1.4      2025-05-09 [1] CRAN (R 4.5.0)
 ggplot2         3.5.2.9001 2025-07-09 [1] Github (tidyverse/ggplot2@f666daf)
 ggplot2movies   0.0.1      2015-08-25 [1] CRAN (R 4.5.0)
 glue            1.8.0      2024-09-30 [1] CRAN (R 4.5.0)
 gtable          0.3.6      2024-10-25 [1] CRAN (R 4.5.0)
 labeling        0.4.3      2023-08-29 [1] CRAN (R 4.5.0)
 lifecycle       1.0.4      2023-11-07 [1] CRAN (R 4.5.0)
 magrittr        2.0.3      2022-03-30 [1] CRAN (R 4.5.0)
 patchwork       1.3.0      2024-09-16 [1] CRAN (R 4.5.0)
 pillar          1.10.2     2025-04-05 [1] CRAN (R 4.5.0)
 pkgconfig       2.0.3      2019-09-22 [1] CRAN (R 4.5.0)
 R6              2.6.1      2025-02-15 [1] CRAN (R 4.5.0)
 ragg            1.4.0      2025-04-10 [1] CRAN (R 4.5.0)
 RColorBrewer    1.1-3      2022-04-03 [1] CRAN (R 4.5.0)
 rlang           1.1.6      2025-04-11 [1] CRAN (R 4.5.0)
 S7              0.2.0      2024-11-07 [1] CRAN (R 4.5.0)
 scales          1.4.0      2025-04-24 [1] CRAN (R 4.5.0)
 sessioninfo     1.2.3      2025-02-05 [1] CRAN (R 4.5.0)
 systemfonts     1.2.3      2025-04-30 [1] CRAN (R 4.5.0)
 textshaping     1.0.1      2025-05-01 [1] CRAN (R 4.5.0)
 tibble          3.3.0      2025-06-08 [1] CRAN (R 4.5.0)
 tidyselect      1.2.1      2024-03-11 [1] CRAN (R 4.5.0)
 vctrs           0.6.5      2023-12-01 [1] CRAN (R 4.5.0)
 withr           3.0.2      2024-10-28 [1] CRAN (R 4.5.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    potential-bugBug report filled by the user

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions