2016-12-22 2 views
0

partykitパッケージは、ツリーの終点ノードにバープロットをプロットし、従属変数クラスの事後確率を視覚的に示します。パーティクルプロットされたツリーの内側ノードの円にバープロットを追加する

標準円/楕円の下の内側のノードにもこれらのバープロットを追加したいと思います。これには、plot()メソッドのinner_panel引数に、node_inner()node_barplot()の組み合わせである関数を使用する必要があります。

しかし、これらの関数はかなり複雑な内部構造を持っています。内側のプロットを垂直方向に積み重ねるためには、2つをどのように混合するのか分かりません。

アイデア?

+0

を 'CT < - ctree(因子(CYL)〜、データ= mtcars、minsplit = 2)。 plot(ct、inner_panel = node_barplot(ct)) ' – rawr

+0

これは、node_barplotの表示を外すだけでプロットされたものです。私はnode_innerとnode_barplotの両方に1つずつ参加しようとしていました。 – Bakaburg

答えて

1

魅力的ではないかもしれません。分割変数とp値の名前を表示する場合は、mainlab引数をnode_barplotに微調整する方が良いでしょう。 Ctree classification with weights - results displayedへの答えには、タイトルに重みを含める方法があります。同様の方法で、変数とp値の分割を表示することもできます。

サブパネルが2つある新しいパネル機能を設定する場合は、gridプログラミング(plot()メソッドの基になっているグラフィックスシステム)が少し必要です。 grid.layoutを設定し、結果としてviewportを実行する必要があります。

あなたが行うことができたパネル機能付き
make_inner_and_barplot <- function(object, ...) { 
    function(node) { 
    ## layout 
    pushViewport(viewport(layout = grid.layout(nrow = 2, ncol = 1, 
     heights = unit(c(0.2, 0.8), "npc")))) 
    ## background color 
    grid.rect(gp = gpar(fill = "white", col = 0)) 
    ## circle 
    pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) 
    node_inner(object)(node) 
    popViewport() 
    ## circle 
    pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 2)) 
    node_barplot(object, id = FALSE, ...)(node) 
    popViewport(2) 
    } 
} 

:?。このような

ct <- ctree(factor(cyl) ~ ., data = mtcars, minsplit = 2) 
plot(ct, inner_panel = make_inner_and_barplot(ct), tnex = 0.8) 

inner and barplot

関連する問題