2

2列のテーブルがあります。最初の列はテスト名で、2 番目の列はテストの成功/失敗です。プロット領域が正方形/長方形のグリッドに分割され、各テスト名が 1 つの正方形/長方形に属するように、これをプロットしたいと考えています。テストが成功した場合は背景色が緑になり、それ以外の場合は赤になります。基本的にツリーマップですが、同じサイズのすべての長方形があります。

    ret = data.frame("x" = c("test1","test2","test3","test4"), "y" = c("success","success","failure","success")) 

これをテスト名を中心に4つのセルが形成されるようにプロットしたい。test3 ブロックの背景色は、残りの部分を赤と緑にする必要があります。ツリーマップ パッケージとポートフォリオ パッケージの map.market 関数を使用してみましたが、どちらもツリーマップ関数であり、サイズ パラメータをすべて同じに指定した後でも、セルごとに異なるサイズが得られます。

どんな助けでも大歓迎です。

4

3 に答える 3

3

この形式でデータを取得します。

# > ret
#       x       y xmin xmax ymin ymax
# 1 test1 success    0    3    0    1
# 2 test2 success    0    3    1    2
# 3 test3 failure    3    6    0    1
# 4 test4 success    3    6    1    2

次に、これを行います:

ggplot(ret, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax)) + 
          geom_rect(colour="white", alpha = 0.5, aes(fill=y)) + 
          scale_fill_manual(values=c("red", "green"), guide=FALSE) + 
          geom_text(aes(x=(xmin+xmax)/2, y=(ymin+ymax)/2, label=x)) + 
          theme_bw() + theme(axis.text.y = element_blank(), 
          axis.text.x = element_blank(), axis.ticks.x = element_blank(), 
          axis.ticks.y = element_blank(), panel.grid.major.x = element_blank(), 
          panel.grid.major.y = element_blank(), panel.grid.minor.x = element_blank(), 
          panel.grid.minor.y = element_blank()) + xlab("") + ylab("") + 
          ggtitle("My tests")

これは私が得るものです:

ここに画像の説明を入力

あなたが求めるかもしれないさらなる微調整はあなたに任せます.

于 2013-04-03T15:48:14.083 に答える
2

treemap パッケージでも実行できます。

ret$index <- factor(ret$x)
ret$area <- 1
ret$color <- factor((ret$x=="test3") + 1, labels=c("Green", "Red"))

tmPlot(ret, index="ind", 
   vSize="value2", 
   vColor="isgreen", 
   type="categorical",
   palette=c("darkolivegreen1", "darksalmon"),
   position.legend="none",
   fontsize.labels=14,       
   title="My test with the treemap package")

ツリーマップ

しかし、ggplot2 を使用した実用的なソリューション (上記の回答のように) があれば、それ以上の微調整やカスタマイズに勝るものはありません。

于 2013-04-04T08:56:59.280 に答える
1

function を使用したかなり単純なbaseグラフィックス ソリューションimage:

tableplot <- function(ret, nrow, ncol, main){
    m <- matrix(as.integer(ret$y),nrow,ncol)
    image(1:nrow,1:ncol,m,col=c("red","green"),axes=FALSE, xlab="",ylab="",main=main)
    text(row(m),col(m),labels=matrix(ret$x,nrow,ncol))
    }

例:

ret <- data.frame("x" = c("test1","test2","test3","test4"), "y" = c("success","success","failure","success"))
tableplot(ret, 2, 2, "My tests")

ここに画像の説明を入力

于 2013-04-04T09:19:09.753 に答える