2012-09-07 19 views
29

ggplotにハイライト表示されたサイトの座標の表を追加したいと思います。例えば、データとして以前questionを使用してggplotのプロット領域内のテーブルをrに追加する

set.seed(1) 
mydata <- data.frame(a=1:50, b=rnorm(50)) 
ggplot(mydata,aes(x=a,y=b)) + 
    geom_point(colour="blue") + 
    geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) 

enter image description here

私はプロット領域内のプロットの右下隅に次の表を追加したいと思います。何かアドバイス?

table<-cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,]) 
table 

    sites a   b 
    site 1 10 -0.3053884 
    site 2 11 1.5117812 
    site 3 12 0.3898432 
    site 4 13 -0.6212406 

答えて

50

あなたはgridExtraパッケージからtableGrobggplot2annotation_customを使用することができます。 user3206440 @

library(ggplot2) 
library(gridExtra) 
set.seed(1) 
mydata <- data.frame(a=1:50, b=rnorm(50)) 
mytable <- cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,]) 
k <- ggplot(mydata,aes(x=a,y=b)) + 
    geom_point(colour="blue") + 
    geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) + 
    annotation_custom(tableGrob(mytable), xmin=35, xmax=50, ymin=-2.5, ymax=-1) 

enter image description here

+0

ニース。あなたが本当に1万分の1の精度で気にしない限り、私は「b」からの小数点以下四捨五入をします(ヒント:火星に飛行しない限り)。 – Spacedman

+0

@mplourdeありがとう!これはとても素敵でストレートな解決策です。テーブルをより際立たせるにはフレームを置くことが可能ですか? – Elizabeth

+0

'?tableGrob'を見て、あなたが制御できる美学を見てください。 'show.box = TRUE'を使うと、セルのフレームが作られます。 –

1

:私は、行番号を削除する回避策を見つけました。自分のデータを行列としてフォーマットし、列名を割り当ててから、直接tableGrobを呼び出すようにしました。私がtableGrobをデータフレームとして呼び出すと、その行の名前は永続化されました。

以下は例です。私はchisq.test出力と

chivalues <- chisq.test(chitable) 
chidf <- matrix(c(unlist(c(round(as.numeric(chivalues[1]), 2), 
        chivalues[2], round(as.numeric(chivalues[3]), 5), numcells))), 
        nrow = 1, ncol = 4, byrow = FALSE) 
colnames(chidf) <- c("Chi-Squared", "DF", "P Value", "Total Cells") 

を対処するための簡単な方法があります確信しているし、後で... user3206440 @

annotation_custom(tableGrob(chidf), xmin=2, xmax=6, ymin=700, ymax=800) 
4

は、行番号を除去する簡単な方法が存在する@Punintended: tableGrobへの呼び出しにrows = NULLを追加してください。

library(ggplot2) 
library(gridExtra) 
set.seed(1) 
mydata <- data.frame(a=1:50, b=rnorm(50)) 
mytable <- 
    cbind(sites=c("site 1","site 2","site 3","site 4"), mydata[10:13,]) 
k <- ggplot(mydata,aes(x=a,y=b)) + 
    geom_point(colour="blue") + 
    geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) + 
    annotation_custom(tableGrob(mytable, rows=NULL), 
        xmin=35, xmax=50, ymin=-2.5, ymax=-1) 

gridExtra Wikiを参照してください。

関連する問題