YuLab-SMU / aplot

Decorate a plot with associated information
https://yulab-smu.top/aplot
92 stars 14 forks source link

issue when running in jupyter notebook environment #18

Closed taylorreiter closed 2 years ago

taylorreiter commented 2 years ago

I'm recieving and error when using aplot in a jupyter notebook environment (running R via irkernel).

I install aplot with:

remotes::install_github("YuLab-SMU/aplot")

Example plots:

plt1 <- ggplot(mtcars, aes(x = mpg, y = cyl)) +
  geom_point()
plt2 <- ggplot(mtcars, aes(x = mpg, y = hp)) +
  geom_point()
plt1 %>% aplot::insert_bottom(plt2)

Produces the following error:

ERROR while rich displaying an object: Error in `ggplot_add()`:
! Can't add `x[[i]]` to a ggplot object.

Traceback:
1. tryCatch(withCallingHandlers({
 .     if (!mime %in% names(repr::mime2repr)) 
 .         stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
 .     rpr <- repr::mime2repr[[mime]](obj)
 .     if (is.null(rpr)) 
 .         return(NULL)
 .     prepare_content(is.raw(rpr), rpr)
 . }, error = error_handler), error = outer_handler)
2. tryCatchList(expr, classes, parentenv, handlers)
3. tryCatchOne(expr, names, parentenv, handlers[[1L]])
4. doTryCatch(return(expr), name, parentenv, handler)
5. withCallingHandlers({
 .     if (!mime %in% names(repr::mime2repr)) 
 .         stop("No repr_* for mimetype ", mime, " in repr::mime2repr")
 .     rpr <- repr::mime2repr[[mime]](obj)
 .     if (is.null(rpr)) 
 .         return(NULL)
 .     prepare_content(is.raw(rpr), rpr)
 . }, error = error_handler)
6. repr::mime2repr[[mime]](obj)
7. repr_text.default(obj)
8. paste(capture.output(print(obj)), collapse = "\n")
9. capture.output(print(obj))
10. withVisible(...elt(i))
11. print(obj)
12. print.aplot(obj)
13. grid.draw(x)
14. grid.draw.aplot(x)
15. grid::grid.draw(as.patchwork(x))
16. as.patchwork(x)
17. do.call(plot_list2, y)
18. (function (gglist = NULL, ncol = NULL, nrow = NULL, byrow = NULL, 
  .     widths = NULL, heights = NULL, guides = NULL, labels = NULL, 
  .     tag_levels = NULL, tag_size = 14, design = NULL) 
  . {
  .     p <- Reduce(`+`, gglist, init = plot_filler()) + plot_layout(ncol = ncol, 
  .         nrow = nrow, byrow = byrow, widths = widths, heights = heights, 
  .         guides = guides, design = design)
  .     if (!is.null(tag_levels) || !is.null(labels)) {
  .         pt <- p$theme$plot.tag
  .         if (is.null(pt)) {
  .             pt <- ggplot2::element_text()
  .         }
  .         pt <- modifyList(pt, list(size = tag_size))
  .         p <- p + plot_annotation(tag_levels = tag_levels) & theme(plot.tag = pt)
  .     }
  .     return(p)
  . })(gglist = structure(list(plotlist = list(structure(list(data = structure(list(
  .     mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 
  .     19.2, 17.8, 16.4, 17.3, 15.2, 10.4, 10.4, 14.7, 32.4, 30.4, 
  .     33.9, 21.5, 15.5, 15.2, 13.3, 19.2, 27.3, 26, 30.4, 15.8, 
  .     19.7, 15, 21.4), cyl = c(6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 
  .     8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 8, 6, 
  .     8, 4), disp = c(160, 160, 108, 258, 360, 225, 360, 146.7, 
  .     140.8, 167.6, 167.6, 275.8, 275.8, 275.8, 472, 460, 440, 
  .     78.7, 75.7, 71.1, 120.1, 318, 304, 350, 400, 79, 120.3, 95.1, 
  .     351, 145, 301, 121), hp = c(110, 110, 93, 110, 175, 105, 
  .     245, 62, 95, 123, 123, 180, 180, 180, 205, 215, 230, 66, 
  .     52, 65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 175, 335, 
  .     109), drat = c(3.9, 3.9, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 
  .     3.92, 3.92, 3.92, 3.07, 3.07, 3.07, 2.93, 3, 3.23, 4.08, 
  .     4.93, 4.22, 3.7, 2.76, 3.15, 3.73, 3.08, 4.08, 4.43, 3.77, 
  .     4.22, 3.62, 3.54, 4.11), wt = c(2.62, 2.875, 2.32, 3.215, 
  .     3.44, 3.46, 3.57, 3.19, 3.15, 3.44, 3.44, 4.07, 3.73, 3.78, 
  .     5.25, 5.424, 5.345, 2.2, 1.615, 1.835, 2.465, 3.52, 3.435, 
  .     3.84, 3.845, 1.935, 2.14, 1.513, 3.17, 2.77, 3.57, 2.78), 
  .     qsec = c(16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 
  .     20, 22.9, 18.3, 18.9, 17.4, 17.6, 18, 17.98, 17.82, 17.42, 
  .     19.47, 18.52, 19.9, 20.01, 16.87, 17.3, 15.41, 17.05, 18.9, 
  .     16.7, 16.9, 14.5, 15.5, 14.6, 18.6), vs = c(0, 0, 1, 1, 0, 
  .     1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 
  .     0, 1, 0, 1, 0, 0, 0, 1), am = c(1, 1, 1, 0, 0, 0, 0, 0, 0, 
  .     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 
  .     1, 1, 1, 1), gear = c(4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 
  .     3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 5, 5, 5, 5, 
  .     4), carb = c(4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 
  .     4, 4, 1, 2, 1, 1, 2, 2, 4, 2, 1, 2, 2, 4, 6, 8, 2)), row.names = c("Mazda RX4", 
  . "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", 
  . "Valiant", "Duster 360", "Merc 240D", "Merc 230", "Merc 280", 
  . "Merc 280C", "Merc 450SE", "Merc 450SL", "Merc 450SLC", "Cadillac Fleetwood", 
  . "Lincoln Continental", "Chrysler Imperial", "Fiat 128", "Honda Civic", 
  . "Toyota Corolla", "Toyota Corona", "Dodge Challenger", "AMC Javelin", 
  . "Camaro Z28", "Pontiac Firebird", "Fiat X1-9", "Porsche 914-2", 
  . "Lotus Europa", "Ford Pantera L", "Ferrari Dino", "Maserati Bora", 
  . "Volvo 142E"), class = "data.frame"), layers = list(<environment>), 
  .     scales = <environment>, mapping = structure(list(x = ~mpg, 
  .         y = ~cyl), class = "uneval"), theme = list(), coordinates = <environment>, 
  .     facet = <environment>, plot_env = <environment>, labels = list(
  .         x = "mpg", y = "cyl")), class = c("gg", "ggplot")), structure(list(
  .     data = structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 
  .     14.3, 24.4, 22.8, 19.2, 17.8, 16.4, 17.3, 15.2, 10.4, 10.4, 
  .     14.7, 32.4, 30.4, 33.9, 21.5, 15.5, 15.2, 13.3, 19.2, 27.3, 
  .     26, 30.4, 15.8, 19.7, 15, 21.4), cyl = c(6, 6, 4, 6, 8, 6, 
  .     8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 
  .     4, 4, 4, 8, 6, 8, 4), disp = c(160, 160, 108, 258, 360, 225, 
  .     360, 146.7, 140.8, 167.6, 167.6, 275.8, 275.8, 275.8, 472, 
  .     460, 440, 78.7, 75.7, 71.1, 120.1, 318, 304, 350, 400, 79, 
  .     120.3, 95.1, 351, 145, 301, 121), hp = c(110, 110, 93, 110, 
  .     175, 105, 245, 62, 95, 123, 123, 180, 180, 180, 205, 215, 
  .     230, 66, 52, 65, 97, 150, 150, 245, 175, 66, 91, 113, 264, 
  .     175, 335, 109), drat = c(3.9, 3.9, 3.85, 3.08, 3.15, 2.76, 
  .     3.21, 3.69, 3.92, 3.92, 3.92, 3.07, 3.07, 3.07, 2.93, 3, 
  .     3.23, 4.08, 4.93, 4.22, 3.7, 2.76, 3.15, 3.73, 3.08, 4.08, 
  .     4.43, 3.77, 4.22, 3.62, 3.54, 4.11), wt = c(2.62, 2.875, 
  .     2.32, 3.215, 3.44, 3.46, 3.57, 3.19, 3.15, 3.44, 3.44, 4.07, 
  .     3.73, 3.78, 5.25, 5.424, 5.345, 2.2, 1.615, 1.835, 2.465, 
  .     3.52, 3.435, 3.84, 3.845, 1.935, 2.14, 1.513, 3.17, 2.77, 
  .     3.57, 2.78), qsec = c(16.46, 17.02, 18.61, 19.44, 17.02, 
  .     20.22, 15.84, 20, 22.9, 18.3, 18.9, 17.4, 17.6, 18, 17.98, 
  .     17.82, 17.42, 19.47, 18.52, 19.9, 20.01, 16.87, 17.3, 15.41, 
  .     17.05, 18.9, 16.7, 16.9, 14.5, 15.5, 14.6, 18.6), vs = c(0, 
  .     0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
  .     1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1), am = c(1, 1, 1, 0, 0, 
  .     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 
  .     0, 1, 1, 1, 1, 1, 1, 1), gear = c(4, 4, 4, 3, 3, 3, 3, 4, 
  .     4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 4, 5, 
  .     5, 5, 5, 5, 4), carb = c(4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 
  .     3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2, 2, 4, 2, 1, 2, 2, 4, 6, 
  .     8, 2)), row.names = c("Mazda RX4", "Mazda RX4 Wag", "Datsun 710", 
  .     "Hornet 4 Drive", "Hornet Sportabout", "Valiant", "Duster 360", 
  .     "Merc 240D", "Merc 230", "Merc 280", "Merc 280C", "Merc 450SE", 
  .     "Merc 450SL", "Merc 450SLC", "Cadillac Fleetwood", "Lincoln Continental", 
  .     "Chrysler Imperial", "Fiat 128", "Honda Civic", "Toyota Corolla", 
  .     "Toyota Corona", "Dodge Challenger", "AMC Javelin", "Camaro Z28", 
  .     "Pontiac Firebird", "Fiat X1-9", "Porsche 914-2", "Lotus Europa", 
  .     "Ford Pantera L", "Ferrari Dino", "Maserati Bora", "Volvo 142E"
  .     ), class = "data.frame"), layers = list(<environment>), scales = <environment>, 
  .     mapping = structure(list(x = ~mpg, y = ~hp), class = "uneval"), 
  .     theme = list(), coordinates = <environment>, facet = <environment>, 
  .     plot_env = <environment>, labels = list(x = "mpg", y = "hp")), class = c("gg", 
  . "ggplot"))), width = 1, height = c(1, 1), layout = structure(c(1, 
  . 2), .Dim = 2:1), n = 2, main_col = 1, main_row = 1), class = "aplot"))
19. Reduce(`+`, gglist, init = plot_filler())
20. `+.gg`(init, x[[i]])
21. add_ggplot(e1, e2, e2name)
22. ggplot_add(object, p, objectname)
23. ggplot_add.default(object, p, objectname)
24. abort(glue("Can't add `{object_name}` to a ggplot object."))
25. signal_abort(cnd, .file)

However when I run this code in rstudio, I don't encounter any issues.

Have you seen anything like this before? Do you have any ideas how i might fix it?

GuangchuangYu commented 2 years ago

pls try the current github version.

taylorreiter commented 2 years ago

It works now, thank you!