我正在使用一个包 ( treemap
),它使用grid
包来生成树形图。但是,我想将其中几个树形图绘制在一起,为这些图添加不同的配色方案。tmPlot
函数使用grid.newpage
函数,它清除图形窗口。我还没有找到像保存grid.newpage
对象那样保存对象的方法ggplot2
。有没有办法将多个grid.newpage
对象绘制到同一个窗口?
## Example
library(treemap)
# load Gross national income data
data(GNI2010)
size <- aggregate(GNI ~ continent, GNI2010, sum)
size <- size[with(size, order(GNI, decreasing = T)),]
cont <- size$continent
widths <- c(sum(size[c(1,3,5),]$GNI),
sum(size$GNI) - sum(size[c(1,3,5),]$GNI))
heights <- c(sum(size[c(1,2),]$GNI),
sum(size[c(3,4),]$GNI),
sum(size[c(5,6),]$GNI))
palettes <- c("Greens", "Blues", "Reds", "Oranges", "Purples", "Greys")
i <- 1 # This is to be replaced by for loop
x <- subset(GNI2010, continent == cont[i], cex = 5)
# create treemap
layout(matrix(1:6, 3, byrow = TRUE), widths = widths, heights = heights)
x1 <- tmPlot(x,
index=c("iso3"),
vSize="population",
vColor="GNI",
type="value", title = "",
position.legend = "none",
palette = palettes[i])
grid.text(cont[i], 0.5, 0.5, gp=gpar(fontsize=20, font = 2, col = "white"))
## x1 is does not make a plot as such and tmPlot overwrites layout
我知道我根据 GNI 总和缩放地块的解决方案是不正确的。一旦我弄清楚如何在同一个窗口中绘制这些树状图,我稍后可能会提出另一个问题。
编辑:我认为这个问题的答案是“不”。目前,您无法按名称保存 grid.newpage 对象,也无法将其中几个对象保存在一个页面上,因为该功能“擦除当前设备或移动到新页面”,如描述中所述。但是,可以找到解决方法。tmPlot
包目前(截至 2013 年 3 月 23 日)viewport
不支持 s,但开发版本支持。