2012-10-09 3 views
7

プロットにテーブルを追加する方法はありますか?私は下記のプロットがあるとします。プロットに行列を追加しますか?

curve(dnorm, -3, +4) 

を今私は、プロットの下にマトリックスを追加したい:

testMat <- matrix(1:20, ncol = 5) 

私の目標は?私はプロットを作成するだけでなく、プロットの下に興味のある情報を含む行列も表示するプロット関数を書いています。

私が何を意味するのかを見るには添付の図を参照してください。 本当にありがとうございます。

enter image description here

+0

私が私のエド・タフテの衣装をしばらく着ているかもしれないなら、グラフは情報の提供者として立つべきです。データ値の表を別々に保つことをお勧めします(例:付録)。それ以外の場合は、他の人が後で使用するために数字を抽出(「コピー&ペースト」)するのがはるかに容易になります。 –

答えて

7

はこれを行うには、おそらくより良い方法がありますが、一つの選択肢は"gplots" packageのように、パッケージという「プロット」行列やデータフレームのいずれかを使用することであるかもしれません。

これは非常に裸の例です(これをカスタマイズして、最終レイアウトをより細かく制御できます)。

# Some sample data 
testMat <- matrix(1:20, ncol = 5) 
testMatDF <- as.data.frame(testMat) 
names(testMatDF) <- c("Hey there", "Column 2", 
         "Some * Symbols", "And^More", 
         "Final Column") 
rownames(testMatDF) <- paste("Group", 1:4) 

# Load the package 
library(gplots) 
# Set par for plotting a three-row plot 
par(mfrow = c(3, 1)) 
curve(dnorm, -3, +4) 
textplot(testMat) 
textplot(testMatDF) 

結果:

enter image description here

あなたのプロットの配置をもう少し創造的な取得したい場合は、layout()代わりのpar(mfrow...)を使用することができます。たとえば、次の機能を提供してaddtable2plotplotrix

layout(matrix(c(1, 1, 2, 3, 3, 3), 
       2, 3, byrow = TRUE)) 
curve(dnorm, -3, +4) 
textplot(testMat) 
textplot(testMatDF) 

enter image description here

+0

あなたの答えは、@ mrdwab、Tahnksです。私はtextplot()に少し問題があります。私の行列は5つの列を持ち、最初の2つの列のみを表示します。とにかく、列間のスペースを減らすことはできますか? – Sam

+0

@Sepehr、 '?textplot'を見て、列と行の間隔を調整する' cmar'と 'rmar'を探してください。私はあなたのデータのサンプルを見ることなく、なぜあなたがあなたが説明した問題を持っているのかわかりません。列の間隔以外にも、最初のプロット領域のサイズが別の理由になります。プロットウィンドウが小さすぎると、一部のデータが途切れることがあります。希望が助けてくれる! – A5C1D2H2I1M1N2O1R2T1

+0

本当にありがとうございます。 – Sam

7

パッケージ。

library(plotrix) 
testdf<-data.frame(Before=c(10,7,5),During=c(8,6,2),After=c(5,3,4)) 
rownames(testdf)<-c("Red","Green","Blue") 
barp(testdf,main="Test addtable2plot",ylab="Value", 
    names.arg=colnames(testdf),col=2:4) 
# show most of the options 
addtable2plot(2,8,testdf,bty="o",display.rownames=TRUE,hlines=TRUE, 
       title="The table") 

編集:ヘルプファイルから

、あなたのプロットの下にそれを置くための新しいプロットにテーブルを置きます。

library(plotrix) 

layout(matrix(c(1,2), 2, 1, byrow = TRUE), 
     widths=c(1,1), heights=c(2,1)) 


testdf<-data.frame(Before=c(10,7,5),During=c(8,6,2),After=c(5,3,4)) 
rownames(testdf)<-c("Red","Green","Blue") 
barp(testdf,main="Test addtable2plot",ylab="Value", 
    names.arg=colnames(testdf),col=2:4) 

plot.new() 
addtable2plot(0,0,testdf,bty="o",display.rownames=TRUE,hlines=TRUE, 
       title="The table") 
+0

私は 'addtable2plot()'も見ましたが、私が望むところにテーブルを配置するのは面倒でした。プロットウィンドウのサイズに依存するようです。 OPが探していたものに似た例(つまり、テーブルがプロット内ではなくプロットの下にある場合)で回答を更新できますか? – A5C1D2H2I1M1N2O1R2T1

+0

@mrdwab私はそれを実現する方法を示しています。 – Roland

+0

素晴らしい。今より良い答えです。 +1 – A5C1D2H2I1M1N2O1R2T1

関連する問題