-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Closed
Description
This maybe either a bug or a feature... Anyway, I find surprising that the size of theme objects in 'ggplot2' (4.0.x) is more than 15 MB compared to 0.1 MB in 'ggplot2' (3.5.2). This makes 'gg' objects containing a 'theme' defintion much larger than in earlier versions. I do not know if this can be avoided in the new S7 implementation. The two reprexes below are for Windows 11 Pro for Workstations 25H2 and R version 4.5.2 (2025-10-31 ucrt). Platform: x86_64-w64-mingw32/x64.
v 4.0.1
library(ggplot2)
packageVersion("ggplot2")
#> [1] '4.0.1'
my.theme <- theme_grey()
format(object.size(my.theme), units = "MB")
#> [1] "15.3 Mb"
str(lapply(my.theme, function(x) {format(object.size(x), units = "KB")}))
#> List of 144
#> $ line : chr "321.7 Kb"
#> $ rect : chr "274.1 Kb"
#> $ text : chr "581 Kb"
#> $ title : chr "507.2 Kb"
#> $ point : chr "252.8 Kb"
#> $ polygon : chr "249.8 Kb"
#> $ geom : chr "575.8 Kb"
#> $ spacing : chr "0.6 Kb"
#> $ margins : chr "72 Kb"
#> $ aspect.ratio : chr "0 Kb"
#> $ axis.title : chr "0 Kb"
#> $ axis.title.x : chr "579.5 Kb"
#> $ axis.title.x.top : chr "579.5 Kb"
#> $ axis.title.x.bottom : chr "0 Kb"
#> $ axis.title.y : chr "579.7 Kb"
#> $ axis.title.y.left : chr "0 Kb"
#> $ axis.title.y.right : chr "579.7 Kb"
#> $ axis.text : chr "507.8 Kb"
#> $ axis.text.x : chr "579.5 Kb"
#> $ axis.text.x.top : chr "579.5 Kb"
#> $ axis.text.x.bottom : chr "0 Kb"
#> $ axis.text.y : chr "579.5 Kb"
#> $ axis.text.y.left : chr "0 Kb"
#> $ axis.text.y.right : chr "579.5 Kb"
#> $ axis.text.theta : chr "0 Kb"
#> $ axis.text.r : chr "579.5 Kb"
#> $ axis.ticks : chr "320.9 Kb"
#> $ axis.ticks.x : chr "0 Kb"
#> $ axis.ticks.x.top : chr "0 Kb"
#> $ axis.ticks.x.bottom : chr "0 Kb"
#> $ axis.ticks.y : chr "0 Kb"
#> $ axis.ticks.y.left : chr "0 Kb"
#> $ axis.ticks.y.right : chr "0 Kb"
#> $ axis.ticks.theta : chr "0 Kb"
#> $ axis.ticks.r : chr "0 Kb"
#> $ axis.minor.ticks.x.top : chr "0 Kb"
#> $ axis.minor.ticks.x.bottom : chr "0 Kb"
#> $ axis.minor.ticks.y.left : chr "0 Kb"
#> $ axis.minor.ticks.y.right : chr "0 Kb"
#> $ axis.minor.ticks.theta : chr "0 Kb"
#> $ axis.minor.ticks.r : chr "0 Kb"
#> $ axis.ticks.length : chr "0.3 Kb"
#> $ axis.ticks.length.x : chr "0 Kb"
#> $ axis.ticks.length.x.top : chr "0 Kb"
#> $ axis.ticks.length.x.bottom : chr "0 Kb"
#> $ axis.ticks.length.y : chr "0 Kb"
#> $ axis.ticks.length.y.left : chr "0 Kb"
#> $ axis.ticks.length.y.right : chr "0 Kb"
#> $ axis.ticks.length.theta : chr "0 Kb"
#> $ axis.ticks.length.r : chr "0 Kb"
#> $ axis.minor.ticks.length : chr "0.3 Kb"
#> $ axis.minor.ticks.length.x : chr "0 Kb"
#> $ axis.minor.ticks.length.x.top : chr "0 Kb"
#> $ axis.minor.ticks.length.x.bottom: chr "0 Kb"
#> $ axis.minor.ticks.length.y : chr "0 Kb"
#> $ axis.minor.ticks.length.y.left : chr "0 Kb"
#> $ axis.minor.ticks.length.y.right : chr "0 Kb"
#> $ axis.minor.ticks.length.theta : chr "0 Kb"
#> $ axis.minor.ticks.length.r : chr "0 Kb"
#> $ axis.line : chr "32.2 Kb"
#> $ axis.line.x : chr "0 Kb"
#> $ axis.line.x.top : chr "0 Kb"
#> $ axis.line.x.bottom : chr "0 Kb"
#> $ axis.line.y : chr "0 Kb"
#> $ axis.line.y.left : chr "0 Kb"
#> $ axis.line.y.right : chr "0 Kb"
#> $ axis.line.theta : chr "0 Kb"
#> $ axis.line.r : chr "0 Kb"
#> $ legend.background : chr "273.3 Kb"
#> $ legend.margin : chr "0 Kb"
#> $ legend.spacing : chr "0.3 Kb"
#> $ legend.spacing.x : chr "0 Kb"
#> $ legend.spacing.y : chr "0 Kb"
#> $ legend.key : chr "0 Kb"
#> $ legend.key.size : chr "0.6 Kb"
#> $ legend.key.height : chr "0 Kb"
#> $ legend.key.width : chr "0 Kb"
#> $ legend.key.spacing : chr "0 Kb"
#> $ legend.key.spacing.x : chr "0 Kb"
#> $ legend.key.spacing.y : chr "0 Kb"
#> $ legend.key.justification : chr "0 Kb"
#> $ legend.frame : chr "0 Kb"
#> $ legend.ticks : chr "0 Kb"
#> $ legend.ticks.length : chr "0.3 Kb"
#> $ legend.axis.line : chr "0 Kb"
#> $ legend.text : chr "507.6 Kb"
#> $ legend.text.position : chr "0 Kb"
#> $ legend.title : chr "507.4 Kb"
#> $ legend.title.position : chr "0 Kb"
#> $ legend.position : chr "0.1 Kb"
#> $ legend.position.inside : chr "0 Kb"
#> $ legend.direction : chr "0 Kb"
#> $ legend.byrow : chr "0 Kb"
#> $ legend.justification : chr "0.1 Kb"
#> $ legend.justification.top : chr "0 Kb"
#> $ legend.justification.bottom : chr "0 Kb"
#> $ legend.justification.left : chr "0 Kb"
#> $ legend.justification.right : chr "0 Kb"
#> $ legend.justification.inside : chr "0 Kb"
#> [list output truncated]
format(object.size(ggplot()), units = "KB")
#> [1] "349.7 Kb"
format(object.size(ggplot() + theme_grey()), units = "KB")
#> [1] "16007.1 Kb"
my.theme <- complete_theme()
format(object.size(my.theme), units = "MB")
#> [1] "15.3 Mb"
str(lapply(my.theme, function(x) {format(object.size(x), units = "KB")}))
#> List of 144
#> $ line : chr "321.7 Kb"
#> $ rect : chr "274.1 Kb"
#> $ text : chr "581 Kb"
#> $ title : chr "507.2 Kb"
#> $ point : chr "252.8 Kb"
#> $ polygon : chr "249.8 Kb"
#> $ geom : chr "575.8 Kb"
#> $ spacing : chr "0.6 Kb"
#> $ margins : chr "72 Kb"
#> $ aspect.ratio : chr "0 Kb"
#> $ axis.title : chr "0 Kb"
#> $ axis.title.x : chr "579.5 Kb"
#> $ axis.title.x.top : chr "579.5 Kb"
#> $ axis.title.x.bottom : chr "0 Kb"
#> $ axis.title.y : chr "579.7 Kb"
#> $ axis.title.y.left : chr "0 Kb"
#> $ axis.title.y.right : chr "579.7 Kb"
#> $ axis.text : chr "507.8 Kb"
#> $ axis.text.x : chr "579.5 Kb"
#> $ axis.text.x.top : chr "579.5 Kb"
#> $ axis.text.x.bottom : chr "0 Kb"
#> $ axis.text.y : chr "579.5 Kb"
#> $ axis.text.y.left : chr "0 Kb"
#> $ axis.text.y.right : chr "579.5 Kb"
#> $ axis.text.theta : chr "0 Kb"
#> $ axis.text.r : chr "579.5 Kb"
#> $ axis.ticks : chr "320.9 Kb"
#> $ axis.ticks.x : chr "0 Kb"
#> $ axis.ticks.x.top : chr "0 Kb"
#> $ axis.ticks.x.bottom : chr "0 Kb"
#> $ axis.ticks.y : chr "0 Kb"
#> $ axis.ticks.y.left : chr "0 Kb"
#> $ axis.ticks.y.right : chr "0 Kb"
#> $ axis.ticks.theta : chr "0 Kb"
#> $ axis.ticks.r : chr "0 Kb"
#> $ axis.minor.ticks.x.top : chr "0 Kb"
#> $ axis.minor.ticks.x.bottom : chr "0 Kb"
#> $ axis.minor.ticks.y.left : chr "0 Kb"
#> $ axis.minor.ticks.y.right : chr "0 Kb"
#> $ axis.minor.ticks.theta : chr "0 Kb"
#> $ axis.minor.ticks.r : chr "0 Kb"
#> $ axis.ticks.length : chr "0.3 Kb"
#> $ axis.ticks.length.x : chr "0 Kb"
#> $ axis.ticks.length.x.top : chr "0 Kb"
#> $ axis.ticks.length.x.bottom : chr "0 Kb"
#> $ axis.ticks.length.y : chr "0 Kb"
#> $ axis.ticks.length.y.left : chr "0 Kb"
#> $ axis.ticks.length.y.right : chr "0 Kb"
#> $ axis.ticks.length.theta : chr "0 Kb"
#> $ axis.ticks.length.r : chr "0 Kb"
#> $ axis.minor.ticks.length : chr "0.3 Kb"
#> $ axis.minor.ticks.length.x : chr "0 Kb"
#> $ axis.minor.ticks.length.x.top : chr "0 Kb"
#> $ axis.minor.ticks.length.x.bottom: chr "0 Kb"
#> $ axis.minor.ticks.length.y : chr "0 Kb"
#> $ axis.minor.ticks.length.y.left : chr "0 Kb"
#> $ axis.minor.ticks.length.y.right : chr "0 Kb"
#> $ axis.minor.ticks.length.theta : chr "0 Kb"
#> $ axis.minor.ticks.length.r : chr "0 Kb"
#> $ axis.line : chr "32.2 Kb"
#> $ axis.line.x : chr "0 Kb"
#> $ axis.line.x.top : chr "0 Kb"
#> $ axis.line.x.bottom : chr "0 Kb"
#> $ axis.line.y : chr "0 Kb"
#> $ axis.line.y.left : chr "0 Kb"
#> $ axis.line.y.right : chr "0 Kb"
#> $ axis.line.theta : chr "0 Kb"
#> $ axis.line.r : chr "0 Kb"
#> $ legend.background : chr "273.3 Kb"
#> $ legend.margin : chr "0 Kb"
#> $ legend.spacing : chr "0.3 Kb"
#> $ legend.spacing.x : chr "0 Kb"
#> $ legend.spacing.y : chr "0 Kb"
#> $ legend.key : chr "0 Kb"
#> $ legend.key.size : chr "0.6 Kb"
#> $ legend.key.height : chr "0 Kb"
#> $ legend.key.width : chr "0 Kb"
#> $ legend.key.spacing : chr "0 Kb"
#> $ legend.key.spacing.x : chr "0 Kb"
#> $ legend.key.spacing.y : chr "0 Kb"
#> $ legend.key.justification : chr "0 Kb"
#> $ legend.frame : chr "0 Kb"
#> $ legend.ticks : chr "0 Kb"
#> $ legend.ticks.length : chr "0.3 Kb"
#> $ legend.axis.line : chr "0 Kb"
#> $ legend.text : chr "507.6 Kb"
#> $ legend.text.position : chr "0 Kb"
#> $ legend.title : chr "507.4 Kb"
#> $ legend.title.position : chr "0 Kb"
#> $ legend.position : chr "0.1 Kb"
#> $ legend.position.inside : chr "0 Kb"
#> $ legend.direction : chr "0 Kb"
#> $ legend.byrow : chr "0 Kb"
#> $ legend.justification : chr "0.1 Kb"
#> $ legend.justification.top : chr "0 Kb"
#> $ legend.justification.bottom : chr "0 Kb"
#> $ legend.justification.left : chr "0 Kb"
#> $ legend.justification.right : chr "0 Kb"
#> $ legend.justification.inside : chr "0 Kb"
#> [list output truncated]
p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
p1 <- p + geom_text()
format(object.size(p1), units = "KB")
#> [1] "359.6 Kb"
p2 <- p1 + theme_grey()
format(object.size(p2), units = "KB")
#> [1] "16017 Kb"
str(lapply(p2, function(x) {format(object.size(x), units = "KB")}))
#> List of 12
#> $ data : chr "7 Kb"
#> $ layers : chr "0.8 Kb"
#> $ scales : chr "0.4 Kb"
#> $ guides : chr "0.4 Kb"
#> $ mapping : chr "40.8 Kb"
#> $ theme : chr "15703.4 Kb"
#> $ coordinates: chr "0.5 Kb"
#> $ facet : chr "0.5 Kb"
#> $ layout : chr "0.4 Kb"
#> $ labels : chr "21.2 Kb"
#> $ meta : chr "0 Kb"
#> $ plot_env : chr "0.1 Kb"Created on 2025-12-22 with reprex v2.1.1
v 3.5.2
library(ggplot2)
packageVersion("ggplot2")
#> [1] '3.5.2'
my.theme <- theme_grey()
format(object.size(my.theme), units = "MB")
#> [1] "0.1 Mb"
str(lapply(my.theme, function(x) {format(object.size(x), units = "KB")}))
#> List of 136
#> $ line : chr "1.4 Kb"
#> $ rect : chr "1.3 Kb"
#> $ text : chr "2.7 Kb"
#> $ title : chr "0 Kb"
#> $ aspect.ratio : chr "0 Kb"
#> $ axis.title : chr "0 Kb"
#> $ axis.title.x : chr "2.1 Kb"
#> $ axis.title.x.top : chr "2.1 Kb"
#> $ axis.title.x.bottom : chr "0 Kb"
#> $ axis.title.y : chr "2.2 Kb"
#> $ axis.title.y.left : chr "0 Kb"
#> $ axis.title.y.right : chr "2.2 Kb"
#> $ axis.text : chr "1.8 Kb"
#> $ axis.text.x : chr "2.1 Kb"
#> $ axis.text.x.top : chr "2.1 Kb"
#> $ axis.text.x.bottom : chr "0 Kb"
#> $ axis.text.y : chr "2.1 Kb"
#> $ axis.text.y.left : chr "0 Kb"
#> $ axis.text.y.right : chr "2.1 Kb"
#> $ axis.text.theta : chr "0 Kb"
#> $ axis.text.r : chr "2.1 Kb"
#> $ axis.ticks : chr "1.2 Kb"
#> $ axis.ticks.x : chr "0 Kb"
#> $ axis.ticks.x.top : chr "0 Kb"
#> $ axis.ticks.x.bottom : chr "0 Kb"
#> $ axis.ticks.y : chr "0 Kb"
#> $ axis.ticks.y.left : chr "0 Kb"
#> $ axis.ticks.y.right : chr "0 Kb"
#> $ axis.ticks.theta : chr "0 Kb"
#> $ axis.ticks.r : chr "0 Kb"
#> $ axis.minor.ticks.x.top : chr "0 Kb"
#> $ axis.minor.ticks.x.bottom : chr "0 Kb"
#> $ axis.minor.ticks.y.left : chr "0 Kb"
#> $ axis.minor.ticks.y.right : chr "0 Kb"
#> $ axis.minor.ticks.theta : chr "0 Kb"
#> $ axis.minor.ticks.r : chr "0 Kb"
#> $ axis.ticks.length : chr "0.6 Kb"
#> $ axis.ticks.length.x : chr "0 Kb"
#> $ axis.ticks.length.x.top : chr "0 Kb"
#> $ axis.ticks.length.x.bottom : chr "0 Kb"
#> $ axis.ticks.length.y : chr "0 Kb"
#> $ axis.ticks.length.y.left : chr "0 Kb"
#> $ axis.ticks.length.y.right : chr "0 Kb"
#> $ axis.ticks.length.theta : chr "0 Kb"
#> $ axis.ticks.length.r : chr "0 Kb"
#> $ axis.minor.ticks.length : chr "0.3 Kb"
#> $ axis.minor.ticks.length.x : chr "0 Kb"
#> $ axis.minor.ticks.length.x.top : chr "0 Kb"
#> $ axis.minor.ticks.length.x.bottom: chr "0 Kb"
#> $ axis.minor.ticks.length.y : chr "0 Kb"
#> $ axis.minor.ticks.length.y.left : chr "0 Kb"
#> $ axis.minor.ticks.length.y.right : chr "0 Kb"
#> $ axis.minor.ticks.length.theta : chr "0 Kb"
#> $ axis.minor.ticks.length.r : chr "0 Kb"
#> $ axis.line : chr "0.3 Kb"
#> $ axis.line.x : chr "0 Kb"
#> $ axis.line.x.top : chr "0 Kb"
#> $ axis.line.x.bottom : chr "0 Kb"
#> $ axis.line.y : chr "0 Kb"
#> $ axis.line.y.left : chr "0 Kb"
#> $ axis.line.y.right : chr "0 Kb"
#> $ axis.line.theta : chr "0 Kb"
#> $ axis.line.r : chr "0 Kb"
#> $ legend.background : chr "1 Kb"
#> $ legend.margin : chr "0.7 Kb"
#> $ legend.spacing : chr "0.6 Kb"
#> $ legend.spacing.x : chr "0 Kb"
#> $ legend.spacing.y : chr "0 Kb"
#> $ legend.key : chr "0 Kb"
#> $ legend.key.size : chr "0.6 Kb"
#> $ legend.key.height : chr "0 Kb"
#> $ legend.key.width : chr "0 Kb"
#> $ legend.key.spacing : chr "0.6 Kb"
#> $ legend.key.spacing.x : chr "0 Kb"
#> $ legend.key.spacing.y : chr "0 Kb"
#> $ legend.frame : chr "0 Kb"
#> $ legend.ticks : chr "0 Kb"
#> $ legend.ticks.length : chr "0.3 Kb"
#> $ legend.axis.line : chr "0 Kb"
#> $ legend.text : chr "1.7 Kb"
#> $ legend.text.position : chr "0 Kb"
#> $ legend.title : chr "1.5 Kb"
#> $ legend.title.position : chr "0 Kb"
#> $ legend.position : chr "0.1 Kb"
#> $ legend.position.inside : chr "0 Kb"
#> $ legend.direction : chr "0 Kb"
#> $ legend.byrow : chr "0 Kb"
#> $ legend.justification : chr "0.1 Kb"
#> $ legend.justification.top : chr "0 Kb"
#> $ legend.justification.bottom : chr "0 Kb"
#> $ legend.justification.left : chr "0 Kb"
#> $ legend.justification.right : chr "0 Kb"
#> $ legend.justification.inside : chr "0 Kb"
#> $ legend.location : chr "0 Kb"
#> $ legend.box : chr "0 Kb"
#> $ legend.box.just : chr "0 Kb"
#> $ legend.box.margin : chr "0.7 Kb"
#> $ legend.box.background : chr "0.3 Kb"
#> $ legend.box.spacing : chr "0.6 Kb"
#> [list output truncated]
format(object.size(ggplot()), units = "KB")
#> [1] "4.6 Kb"
format(object.size(ggplot() + theme_grey()), units = "KB")
#> [1] "77.9 Kb"
my.theme <- complete_theme()
#> Error in complete_theme(): could not find function "complete_theme"
format(object.size(my.theme), units = "MB")
#> [1] "0.1 Mb"
str(lapply(my.theme, function(x) {format(object.size(x), units = "KB")}))
#> List of 136
#> $ line : chr "1.4 Kb"
#> $ rect : chr "1.3 Kb"
#> $ text : chr "2.7 Kb"
#> $ title : chr "0 Kb"
#> $ aspect.ratio : chr "0 Kb"
#> $ axis.title : chr "0 Kb"
#> $ axis.title.x : chr "2.1 Kb"
#> $ axis.title.x.top : chr "2.1 Kb"
#> $ axis.title.x.bottom : chr "0 Kb"
#> $ axis.title.y : chr "2.2 Kb"
#> $ axis.title.y.left : chr "0 Kb"
#> $ axis.title.y.right : chr "2.2 Kb"
#> $ axis.text : chr "1.8 Kb"
#> $ axis.text.x : chr "2.1 Kb"
#> $ axis.text.x.top : chr "2.1 Kb"
#> $ axis.text.x.bottom : chr "0 Kb"
#> $ axis.text.y : chr "2.1 Kb"
#> $ axis.text.y.left : chr "0 Kb"
#> $ axis.text.y.right : chr "2.1 Kb"
#> $ axis.text.theta : chr "0 Kb"
#> $ axis.text.r : chr "2.1 Kb"
#> $ axis.ticks : chr "1.2 Kb"
#> $ axis.ticks.x : chr "0 Kb"
#> $ axis.ticks.x.top : chr "0 Kb"
#> $ axis.ticks.x.bottom : chr "0 Kb"
#> $ axis.ticks.y : chr "0 Kb"
#> $ axis.ticks.y.left : chr "0 Kb"
#> $ axis.ticks.y.right : chr "0 Kb"
#> $ axis.ticks.theta : chr "0 Kb"
#> $ axis.ticks.r : chr "0 Kb"
#> $ axis.minor.ticks.x.top : chr "0 Kb"
#> $ axis.minor.ticks.x.bottom : chr "0 Kb"
#> $ axis.minor.ticks.y.left : chr "0 Kb"
#> $ axis.minor.ticks.y.right : chr "0 Kb"
#> $ axis.minor.ticks.theta : chr "0 Kb"
#> $ axis.minor.ticks.r : chr "0 Kb"
#> $ axis.ticks.length : chr "0.6 Kb"
#> $ axis.ticks.length.x : chr "0 Kb"
#> $ axis.ticks.length.x.top : chr "0 Kb"
#> $ axis.ticks.length.x.bottom : chr "0 Kb"
#> $ axis.ticks.length.y : chr "0 Kb"
#> $ axis.ticks.length.y.left : chr "0 Kb"
#> $ axis.ticks.length.y.right : chr "0 Kb"
#> $ axis.ticks.length.theta : chr "0 Kb"
#> $ axis.ticks.length.r : chr "0 Kb"
#> $ axis.minor.ticks.length : chr "0.3 Kb"
#> $ axis.minor.ticks.length.x : chr "0 Kb"
#> $ axis.minor.ticks.length.x.top : chr "0 Kb"
#> $ axis.minor.ticks.length.x.bottom: chr "0 Kb"
#> $ axis.minor.ticks.length.y : chr "0 Kb"
#> $ axis.minor.ticks.length.y.left : chr "0 Kb"
#> $ axis.minor.ticks.length.y.right : chr "0 Kb"
#> $ axis.minor.ticks.length.theta : chr "0 Kb"
#> $ axis.minor.ticks.length.r : chr "0 Kb"
#> $ axis.line : chr "0.3 Kb"
#> $ axis.line.x : chr "0 Kb"
#> $ axis.line.x.top : chr "0 Kb"
#> $ axis.line.x.bottom : chr "0 Kb"
#> $ axis.line.y : chr "0 Kb"
#> $ axis.line.y.left : chr "0 Kb"
#> $ axis.line.y.right : chr "0 Kb"
#> $ axis.line.theta : chr "0 Kb"
#> $ axis.line.r : chr "0 Kb"
#> $ legend.background : chr "1 Kb"
#> $ legend.margin : chr "0.7 Kb"
#> $ legend.spacing : chr "0.6 Kb"
#> $ legend.spacing.x : chr "0 Kb"
#> $ legend.spacing.y : chr "0 Kb"
#> $ legend.key : chr "0 Kb"
#> $ legend.key.size : chr "0.6 Kb"
#> $ legend.key.height : chr "0 Kb"
#> $ legend.key.width : chr "0 Kb"
#> $ legend.key.spacing : chr "0.6 Kb"
#> $ legend.key.spacing.x : chr "0 Kb"
#> $ legend.key.spacing.y : chr "0 Kb"
#> $ legend.frame : chr "0 Kb"
#> $ legend.ticks : chr "0 Kb"
#> $ legend.ticks.length : chr "0.3 Kb"
#> $ legend.axis.line : chr "0 Kb"
#> $ legend.text : chr "1.7 Kb"
#> $ legend.text.position : chr "0 Kb"
#> $ legend.title : chr "1.5 Kb"
#> $ legend.title.position : chr "0 Kb"
#> $ legend.position : chr "0.1 Kb"
#> $ legend.position.inside : chr "0 Kb"
#> $ legend.direction : chr "0 Kb"
#> $ legend.byrow : chr "0 Kb"
#> $ legend.justification : chr "0.1 Kb"
#> $ legend.justification.top : chr "0 Kb"
#> $ legend.justification.bottom : chr "0 Kb"
#> $ legend.justification.left : chr "0 Kb"
#> $ legend.justification.right : chr "0 Kb"
#> $ legend.justification.inside : chr "0 Kb"
#> $ legend.location : chr "0 Kb"
#> $ legend.box : chr "0 Kb"
#> $ legend.box.just : chr "0 Kb"
#> $ legend.box.margin : chr "0.7 Kb"
#> $ legend.box.background : chr "0.3 Kb"
#> $ legend.box.spacing : chr "0.6 Kb"
#> [list output truncated]
p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
p1 <- p + geom_text()
format(object.size(p1), units = "KB")
#> [1] "14.8 Kb"
p2 <- p1 + theme_grey()
format(object.size(p2), units = "KB")
#> [1] "88.1 Kb"
str(lapply(p2, function(x) {format(object.size(x), units = "KB")}))
#> List of 11
#> $ data : chr "7 Kb"
#> $ layers : chr "0.5 Kb"
#> $ scales : chr "0.4 Kb"
#> $ guides : chr "0.4 Kb"
#> $ mapping : chr "2.8 Kb"
#> $ theme : chr "73.4 Kb"
#> $ coordinates: chr "0.5 Kb"
#> $ facet : chr "0.5 Kb"
#> $ plot_env : chr "0.1 Kb"
#> $ layout : chr "0.4 Kb"
#> $ labels : chr "0.8 Kb"Created on 2025-12-22 with reprex v2.1.1
Metadata
Metadata
Assignees
Labels
No labels