如何显示已保存的树状图对象?包括 MWE?
How do I display a saved treemap object? MWE included?
这可能是一个愚蠢的问题,但是有人知道如何在 R 中生成树状图对象后显示它吗?考虑以下代码:
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"
)
这不会生成图形,但会保存 "treemap list"。有谁知道如何显示这个对象?
PS:我的动机是在生成特定的树图后修改一些分类标签(添加百分比),但我无法从树顶对象的显示中生成图。
查看源代码似乎没有存储足够的信息以允许重新绘制。 treemap()
是因为它正在绘制副作用而被调用。鉴于此,如果以后无法绘制它,我不知道为什么他们有 draw=FALSE
选项。
虽然官方功能不允许,但是你可以hack这个功能。我们可以将函数修改为 return 它传递给绘图的所有参数。这是使用 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 <- treemap2(
GNI2014,
index = c("continent", "iso3"),
vSize = "population",
vColor = "GNI",
draw = FALSE,
type = "value"
)
现在所有用于绘制函数的参数都存储在tm$drawparam
中。它使用隐藏函数 tmDrawRect
来完成所有绘图,但您可以使用
调用它
do.call(treemap:::tmDrawRect, tm$drawparam)
使用存储在对象中的数据。如果您更改 tm$drawparam
中的任何数据,将直接影响情节。
这可能是一个愚蠢的问题,但是有人知道如何在 R 中生成树状图对象后显示它吗?考虑以下代码:
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"
)
这不会生成图形,但会保存 "treemap list"。有谁知道如何显示这个对象?
PS:我的动机是在生成特定的树图后修改一些分类标签(添加百分比),但我无法从树顶对象的显示中生成图。
查看源代码似乎没有存储足够的信息以允许重新绘制。 treemap()
是因为它正在绘制副作用而被调用。鉴于此,如果以后无法绘制它,我不知道为什么他们有 draw=FALSE
选项。
虽然官方功能不允许,但是你可以hack这个功能。我们可以将函数修改为 return 它传递给绘图的所有参数。这是使用 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 <- treemap2(
GNI2014,
index = c("continent", "iso3"),
vSize = "population",
vColor = "GNI",
draw = FALSE,
type = "value"
)
现在所有用于绘制函数的参数都存储在tm$drawparam
中。它使用隐藏函数 tmDrawRect
来完成所有绘图,但您可以使用
do.call(treemap:::tmDrawRect, tm$drawparam)
使用存储在对象中的数据。如果您更改 tm$drawparam
中的任何数据,将直接影响情节。