10

dendextendを使用して R でタングルグラムをプロットしています。を使用して複数のサブプロットをプロットできるかどうか疑問に思っていpar(mfrow = c(2,2))ますか?

私はそれを理解できないようです。

ありがとう

library(dendextend)
dend15 <- c(1:5) %>% dist %>% hclust(method = "average") %>% as.dendrogram
dend15 <- dend15 %>% set("labels_to_char")
dend51 <- dend15 %>% set("labels", as.character(5:1)) %>% match_order_by_labels(dend15)
dends_15_51 <- dendlist(dend15, dend51)

par(mfrow = c(2,2))
tanglegram(dends_15_51)
tanglegram(dends_15_51)
tanglegram(dends_15_51)
tanglegram(dends_15_51)
4

2 に答える 2

4

単一のグラフィカル デバイスで組み合わせたプロットを作成するのではなく、複数のプロットを作成し、それらをドキュメントに配置するときにそれらを配置することができます。パッケージは、単一の R チャンクで生成された複数のプロットを保持するためにknitr使用し、関連する を指定することで、これを簡単に行うことができます。たとえば、プロットがドキュメントに配置されるときに、2 つのプロットを連続して 50% と指定します。fig.show = "hold"out.width

たとえば、R マークダウン ( .Rmd) ファイルには次のようなものがあります。

```{r, fig.show = "hold", out.width = "50%", echo = FALSE}
suppressPackageStartupMessages(library(dendextend))
dend15 <- c(1:5) %>% dist %>% hclust(method = "average") %>% as.dendrogram
dend15 <- dend15 %>% set("labels_to_char")
dend51 <- dend15 %>% set("labels", as.character(5:1)) %>% match_order_by_labels(dend15)
dends_15_51 <- dendlist(dend15, dend51)
tanglegram(dends_15_51, margin_outer = 1)
plot.new()
tanglegram(dends_15_51, margin_outer = 1)
plot.new()
tanglegram(dends_15_51, margin_outer = 1)
plot.new()
tanglegram(dends_15_51, margin_outer = 1)
```

これknitを HTML に変換すると、次のようになります。

ここに画像の説明を入力

コードにいくつかの変更を加えました。

  • からのパッケージ起動メッセージを抑制しましdendextendた。
  • margin_outer隣接するプロットの x 軸ラベルが重ならないようにデフォルトを増やしました。
  • plot.new()の呼び出しの間に追加されますtanglegram。そうしないと、次のプロットが前のプロットの上に描画されます (これは をtanglegram使用した結果でlayoutあり、複数のプロットを生成する場合は一般に必要ありません)。

ファイルでも同じアプローチを使用でき.Rnwます。PDF に (LaTeX 経由で) コンパイルする場合は、図のキャプションとサブキャプションを追加できます。詳細については、knitrデモ #067 - グラフィック オプションを参照してください。

于 2016-10-04T13:24:47.110 に答える