2012-10-09 5 views
7

Bir grafiğe tablo eklenmesi zaten var mı?Bir arsaya matris ekleme?

curve(dnorm, -3, +4) 

Şimdi grafiğinin altındaki bir matris eklemek ister:

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

Benim gol aşağıda arsa olduğunu varsayalım? Ben sadece bir arsa yaratmak değil, aynı zamanda arsa altında ilgi duyduğum bilgileri de içeren bir matris gösteren bir komplo fonksiyonu yazıyorum.

Lütfen ne demek istediğimi görmek için ekteki resme bakın. Yardımlarınız için gerçekten minnettarım.

enter image description here

+0

Ed Tufte kostümümü bir süreliğine koyabilirsem: Bir grafik bir bilgi taşıyıcısı olarak kendi içinde durmalıdır. Veri değerleri tablosunu ayrı tutmanızı tavsiye ederim (ör. Ek). Başka bir şey yoksa, bu, diğer insanların sonraki kullanım için sayıları ("kopyala ve yapıştır") çıkarmasını çok daha kolay hale getirir. Cevabınız için –

cevap

7

bunu yapmak için muhtemelen daha iyi yolları vardır, ancak bir seçenek "gplots" package gibi paketler olduğunu "araziler" matrisler ve veri çerçeveleri birini kullanmak olabilir.

İşte çok çıplak bir örnek (muhtemelen son düzende daha iyi denetim için bunu özelleştirebilirsiniz).

# 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) 

sonuç: Eğer araziler yerleştirilmesi ile biraz daha yaratıcı olmak istiyorsanız

enter image description here

Ayrıca layout() yerine par(mfrow...) kullanabilirsiniz. Örneğin:

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

merhaba @mrdwab, Tahnks. Textplot() ile ilgili bir sorunum var. Matrisim 5 sütun içeriyor ve sadece ilk iki sütunu gösteriyor. Yine de sütunlar arasındaki boşluğu azaltabilir miyim? – Sam

+0

@Sepehr, "textplot" 'a bakın ve sütun ve satır aralığını ayarlamak için "cmar" ve "rmar" ı arayın. Verilerinizin bir örneğini görmeden neden anlattığınız soruna neden sahip olduğunuzdan emin değilim. Sütun aralığı dışında, başka bir sebep de başlangıç ​​çizim alanınızın boyutu olabilir; çizim penceresi çok küçükse, bazı veriler kesilebilir. Umarım yardımcı olur! – A5C1D2H2I1M1N2O1R2T1

+0

Yardımlarınız için gerçekten minnettarım. – Sam

7

Paket plotrix fonksiyonunu addtable2plot sağlar. yardım dosyasından

Örnek:

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") 

Düzenleme: senin arsa altına yerleştirmek için yeni bir arsa tabloyu koyun.

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

Ben de 'addtable2plot()' a baktım, ama istediğim masayı konumlandırmak zahmetli görünüyordu. Arsa penceresi boyutuna bağlı gibi görünüyor. Cevabınızı OP'nin neye benzediğine benzeyen bir örnekle günceller misiniz (diğer bir deyişle, tablonun arsa yerine alanın altında olduğu yer)? – A5C1D2H2I1M1N2O1R2T1

+0

@mrdwab Bunu nasıl elde edeceğimi bir olasılıkla gösteriyorum. – Roland

+0

harika. Şimdi çok daha iyi cevap. +1 – A5C1D2H2I1M1N2O1R2T1