web-dev-qa-db-ja.com

ノードの重複を避けるために大きなctree()をプロットする方法

partyパッケージのctree()のデシジョンツリーの結果をプロットすると、フォントが大きすぎ、ボックスも大きすぎました。それらは他のノードとオーバーラップしています。

ボックスとフォントが小さくなるようにplot()からの出力をカスタマイズする方法はありますか?

24
JPC

簡単に言えば、いいえ、フォントサイズを変更することはできませんが、他にもいくつかの良いオプションがあります。

私は3つの可能な解決策を知っています。最初に、プロット内の他のパラメーターを変更して、よりコンパクトにすることができます。次に、グラフィックファイルに書き込んで、そのファイルを表示できます。 3番目に、同じ作者の一部による新しいパッケージであるpartykitパッケージで、ctree()の代替実装を使用できます。

デフォルトのプロットの例

_library(party)
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, 
               controls = ctree_control(maxsurrogate = 3))
plot(airct)  #default plot, some crowding with N hidden on leafs
_

default plot

簡略化されたプロット

_# simpler version of plot
plot(airct, type="simple",           # no terminal plots
  inner_panel=node_inner(airct,
       abbreviate = TRUE,            # short variable names
       pval = FALSE,                 # no p-values
       id = FALSE),                  # no id of node
  terminal_panel=node_terminal(airct, 
       abbreviate = TRUE,
       digits = 1,                   # few digits on numbers
       fill = c("white"),            # make box white not grey
       id = FALSE)
   )
_

enter image description here

これはいくらか良く、さらに改善できるかもしれません。これらの詳細を理解するために、私は最初に「BinaryTree」を返すclass(airct)を行いました。この情報を武器に、私は_?plot.BinaryTree_を読み始めました

ファイルに書き込む

2番目の簡単な解決策は、プロットをファイルに書き込んでからファイルを表示することです。最適な設定を見つけるには、設定を試してみる必要がある場合があります。

_png("airct.png", res=80, height=800, width=1600) 
   plot(airct) 
dev.off()
_

代わりにpartykitパッケージでプロット

最後に、同じ作成者が何人か、パーティーパッケージの新しい未完成の再実装を使用できます。この時点(2012年12月)で、再実行した関数はctree()のみです。このバージョンでは、フォントサイズを変更できます。

_    library(partykit) 
    airct <- ctree(Ozone ~ ., data = airq)
    class(airct)  # different class from before
    # "constparty" "party"  
plot(airct, gp = gpar(fontsize = 6),     # font size changed to 6
  inner_panel=node_inner,
  ip_args=list(
       abbreviate = TRUE, 
       id = FALSE)
  )
_

enter image description here

ここでは、葉をデフォルトの設定のままにしておきます。それは、私が率直に思い通りに動作させる方法を理解できなかったためです。これは、パッケージが不完全であることと関係しているのではないかと思います(2012年12月現在)。 _?plot.party_で始まるplotメソッドについて読むことができます

27
MattBagg

別のオプション(必要なものは変更しないが、根本的な問題を解決できる可能性があります)は、クラスで割り当てについて学習したように、図自体のサイズを変更することです。

以下のrを置き換えます。

{r}

と:

{r, fig.width=X, fig.height=Y} 

xとYは、適切なサイズに応じて、ユーザーが選択した数値に置き換える必要があります。

このWebサイト は、これをより詳細に、そして文書全体で普遍的に行うことについて話します。

0
user9894772