2

パッケージを使用してツリーマップを生成するパッケージ ( treemap) を使用しています。ただし、これらのツリーマップのいくつかを一緒にプロットして、これらのプロットに異なる配色gridを追加したいと思います。function は、グラフィックス ウィンドウをクリアする function を使用します。オブジェクトに対してできるように、オブジェクトを保存する方法が見つかりません。複数のオブジェクトを同じウィンドウにプロットする方法はありますか?tmPlotgrid.newpagegrid.newpageggplot2grid.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が、開発版はサポートしています。

4

2 に答える 2

2

ご質問ありがとうございます。tmPlotの出力は、実際には保存されたプロットではありません。

次の更新では、引数vpを追加します。これにより、描画するビューポートを指定できます。指定されていない場合にのみ、grid.newpageが呼び出されます。

更新: https://github.com/mtennekes/treemapで開発バージョンを確認およびテストできます

ブライアン・ハンソンの例を適用するには:

vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
tmPlot(GNI2010,
  index="continent",
  vSize="population",
  vColor="GNI",
  type="value",
  vp = vplayout(1,1))
tmPlot(GNI2010,
  index=c("continent", "iso3"),
  vSize="population",
  vColor="GNI",
  type="value",
  vp = vplayout(1,2))
于 2013-02-21T20:12:54.000 に答える
1

任意のグリッド グラフィックスに対して非常に柔軟なアプローチを次に示します。

vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
print(a, vp = vplayout(1,1))
print(b, vp = vplayout(1,2))

保存したプロット オブジェクトはどこaにありますか。bしたがって、事前に各プロットを個別にテストし、名前を付けて保存してからa, b, ...、上記のようにプロットします。

ああ、もしtmPlot常にに設定できる引数grid.newpageがあるかどうかを確認するか、関数のコピーを作成して をコメントアウトします。new.pageFALSEnewpage

于 2013-02-21T11:38:13.387 に答える