我正在使用一個包(treemap
),它使用grid
包生成樹形圖。但是,我想將這些樹形圖中的幾個繪製在一起,將different color schemes添加到這些圖中。 tmPlot
功能使用grid.newpage
函數,它清除圖形窗口。我沒有找到像ggplot2
對象一樣的方法來保存grid.newpage
對象。有沒有辦法將幾個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,但開發版本確實如此。
謝謝您的回答。麻煩的是我不知道如何將tmPlot保存爲對象。我知道你發送的這行代碼,它對於ggplot2對象非常有效。 – Mikko 2013-02-21 11:42:48
你從哪裏得到'treeplot'?它不在CRAN上,如果有人使用Google,那麼這個名字有很多。 – 2013-02-21 11:47:26
Ops ...我的意思是:'treemap'。對不起,這個錯誤。我編輯了我的問題。 – Mikko 2013-02-21 11:52:59