R 如何显示已保存的树映射对象?包括我们吗?

R 如何显示已保存的树映射对象?包括我们吗?,r,plot,treemap,R,Plot,Treemap,这可能是一个愚蠢的问题,但有人知道在R中生成treemap对象后如何显示它吗?考虑下面的代码: loadpackages <-function(package.list = c("ggplot2", "Rcpp")) {new.packages <-package.list[!(package.list %in% installed.packages()[, "Package"])] if (length(new.packages)) install.packag

这可能是一个愚蠢的问题,但有人知道在R中生成treemap对象后如何显示它吗?考虑下面的代码:

loadpackages <-function(package.list = c("ggplot2", "Rcpp")) {new.packages <-package.list[!(package.list %in% installed.packages()[, "Package"])]
    if (length(new.packages))
      install.packages(new.packages, repos = 'http://cran.us.r-project.org')
    lapply(eval(package.list), require, character.only = TRUE)}
loadpackages(c("treemap"))

data(GNI2014)
tm = treemap(
  GNI2014,
  index = c("continent", "iso3"),
  vSize = "population",
  vColor = "GNI",
  draw = FALSE, # comment this line out to see the treemap
  type = "value"
)

loadpackages查看源代码,它似乎没有存储足够的信息以允许重新绘制。
treemap()。考虑到这一点,我不知道如果以后无法绘制,为什么会有一个
draw=FALSE
选项

即使官方函数不允许,您也可以对该函数进行黑客攻击。我们可以修改函数以返回它传递给绘图的所有参数。下面是一个用
treemap_2.4-1测试的版本

treemap2 <- treemap
drawcall <- body(treemap)[[c(85,3,2)]]
drawcall[[1]] <- quote(list)
savelist <- as.list(body(t2)[[c(90,3)]])
savelist[["drawparam"]] <- drawcall
body(treemap)[[c(90,3)]] <- as.call(savelist)

使用存储在对象中的数据。如果您在
tm$drawparam
中更改了任何会直接影响绘图的数据。

非常感谢您在这方面所做的出色工作。你们不仅解决了我的困惑,你们的解决方案还教会了我如何引用函数内部。如果你来华盛顿,请告诉我,你已经赢得了一顿免费午餐。
tm <- treemap2(
  GNI2014,
  index = c("continent", "iso3"),
  vSize = "population",
  vColor = "GNI",
  draw = FALSE,
  type = "value"
)
do.call(treemap:::tmDrawRect, tm$drawparam)