Changes in version 0.1.3 (2025-09-20) - as.grob for tmap object, defined in the 'tmap' package (2025-09-20, Sat) - replace aes_ with aes (2025-09-20, Sat) Changes in version 0.1.2 (2023-08-09) - support oncoplot object in 'aplot' and 'aplotExtra' (2023-07-18, Tue) Changes in version 0.1.1 (2023-06-27) - supports gglist object (2023-06-26, Mon) Changes in version 0.1.0 (2021-09-02) - supports bbplot object (2021-09-02, Thu) Changes in version 0.0.9 (2021-08-20) - import yulab.utils (2021-08-20, Fri) - ... parameter in as.ggplot (2021-08-06, Fri) Changes in version 0.0.8 (2021-08-04) - allows passing envir to base2grob (2021-08-04, Wed, #11) Changes in version 0.0.7 (2021-05-11) - patchwork object supported (2021-05-11, Tue) Changes in version 0.0.6 (2021-04-22) - aplot object supported (2020-03-27, Fri) - https://github.com/YuLab-SMU/aplot - angle parameter in as.ggplot (2020-03-16, Mon) Changes in version 0.0.5 (2020-03-12) - hjust and vjust parameters in as.ggplot (2020-03-11, Wed) - grid2grob for all plot generated by grid (2019-08-21, Wed) - can be converted also using expression or function that supported in previous version Changes in version 0.0.4 (2019-08-06) - as.grob method for Heatmap object (defined in ComplexHeatmap package) (2019-08-06, Tue) - as.grob method for eulergram object (defined in eulerr package) (2019-05-09, Thu) - https://github.com/GuangchuangYu/ggplotify/issues/5 Changes in version 0.0.3 (2018-08-03) - as.grob method for pheatmap object (2018-08-03, Fri) - thanks to my PR: https://github.com/raivokolde/pheatmap/pull/43 - support converting magick-image to grob and ggplot object. (2018-04-25, Wed) - redefined as.grob as S3 Generics. Changes in version 0.0.2 (2018-04-24) - add NEWS.md, README and example in man (2018-04-24, Tue) Changes in version 0.0.1 - as.grob by combining ggimage::toGrob and base2grob package which was deprecated - as.grob can convert base plot or grid plot (e.g. vcd, UpSetR packages) to grob object - as.ggplot supports all as.grob-supported plots. Changes in version 0.0.0 embed base to grid plot (2015, ChIPseeker) I figured out a way to embed base plot (vennpie) to grid plot (upset) when developing upsetplot function in ChIPseeker package for visualizing overlap of ChIPseq data in 2015, http://guangchuangyu.github.io/2015/07/upsetplot-in-chipseeker/. embed ggplot (2015, ggtree and ggimage) I developed a subview function in ggtree package in 2015, for embeding subplots, https://github.com/YuLab-SMU/ggtree/commit/2ab2876d5e92454869c3307ea6f3c8e2656630ef. This function was re-implemented as geom_subview and packed in the ggimage package. embed plots (base, lattic, ggplot or image) to ggplot (2017, ggimage and hexSticker) In the early of 2017, I started to develop R script to produce ggtree sticker. @lgatto first came out with an idea of makeing an R package for producing hex sticker by packing my script into a function, https://github.com/Bioconductor/BiocStickers/issues/12. I have several ideas to improve the package, including producing print-ready figure, employing modular design and supporting grammar of graphics, as well as supporting subplot generated by base and lattice. I started to develop the hexSticker package, https://github.com/GuangchuangYu/hexSticker/issues/2, with base plot, lattice, ggplot2 and image file supported as subplot, which was actually implemented in ggimage (toGrob function, image file are supported by geom_image). convert base to grob (2018, base2grob) I wrote a blog post, http://guangchuangyu.github.io/cn/2018/03/five-questions-of-meme/, to ask questions based on the meme package to help users understand ggplot2. After I wrote the sentence: if you know how ggsave works, you can even extend it to support base plot I started to extend ggsave to support base plot by using formula or expression, e.g. ggsave(~base_plot). After that, I asked myself, why not extending cowplot to support base plot with the fact that I already have source code to convert base plot to grob object (ggimage:::toGrob). Then I developed the base2grob package and submit it to CRAN. convert (almost all) plots to ggplot (2018, ggplotify) I wrote a blog post, http://guangchuangyu.github.io/cn/2018/04/ggvenn/, to introduce ggvenn function (in yyplot package, only available on GitHub), and started to play with the UpSetR package. I believe upset plot contains too much empty space and can embed a venn plot as I did in 2015 with vennpie. I created a PR, https://github.com/hms-dbmi/UpSetR/pull/112, to make it possible to capture upset output and be able to be converted to grob object. I thought it would be more easy if I further convert the object to ggplot then I can directly use ggimage::geom_subview() to embed ggvenn inside upset plot. With this idea, I started to implement as.ggplot function. Then, I suddenly realized that I should packed as.ggplot, ggimage:::toGrob and base2grob into a single package. That's why we have ggplotify, which contains as.grob to convert plots to grob and as.ggplot to convert plots to ggplot objects.