2010-09-24 8 views
24

मुझे क्या करना चाहते हैं यह मैट्रिक्स लेने के रूप में:एक मैट्रिक्स प्रदर्शित करते हैं, मान सहित, एक हीटमैप

> partb 
       0.5 1.5 1a 1b -2 -3 
A1FCLYRBAB430F 0.26 0.00 0.74 0.00 0.00 0.00 
A1SO604B523Q68 0.67 0.33 0.00 0.00 0.00 0.00 
A386SQL39RBV7G 0.00 0.33 0.33 0.33 0.00 0.00 
A3GTXOXRSE74WD 0.41 0.00 0.08 0.03 0.05 0.44 
A3OOD9IMOHPPFQ 0.00 0.00 0.33 0.00 0.33 0.33 
A8AZ39QM2A9SO 0.13 0.54 0.18 0.13 0.00 0.03 

और फिर एक हीटमैप अब रंग कोशिकाओं में से प्रत्येक मान के है बनाते हैं।

एक हीटमैप कमाना आसान है:

> heatmap(partb, Rowv=NA, Colv=NA, col = heat.colors(256), margins=c(5,10)) 

लेकिन मुझे के जीवन के लिए मैं समझ नहीं कैसे कोशिकाओं में से प्रत्येक में मूल्य डालने के लिए।

मैं क्या याद आ रही है? निश्चित रूप से यह एक आम बात है।

उत्तर

11

gplots पैकेज से आजमाएं। सेलोट और नोटिकॉल पैरामीटर कोशिकाओं में रखे गए पाठ को नियंत्रित करते हैं। आप शायद dendrogram = "none" भी चाहेंगे।

+0

यह अच्छी तरह से काम करता है, लेकिन खाली स्थान सभी में गड़बड़ है। छवि का शीर्ष बायां, जहां कुंजी थी, बस खाली है। इसे कैसे केन्द्रित करने के बारे में कोई विचार: heatmap.2 (partb, Rowv = FALSE, Colv = FALSE, dendrogram = 'none', cellnote = partb, notecol = "black", trace = 'none', rowsep = c (1, 2,3,4,5,6), कुंजी = गलत) –

+1

अच्छा बिंदु। Heatmap.2 फ़ंक्शन वास्तव में लेआउट फ़ंक्शन का उपयोग करता है और आउटपुट को 4 प्लॉट बनाता है। आप जो भी चाहते हैं उसे करने के लिए आप 'लेट', 'lwid', और' lhei', params, या फ़ंक्शन के स्रोत को संशोधित करने का प्रयास कर सकते हैं, लेकिन मैं इसके साथ अब तक नहीं गया हूं। –

+3

यह वही था जो मुझे चाहिए था। 'Lwid' और' lhei 'के साथ मेसिंग पूरी तरह से काम किया। 'मार्जिन' सेट करने से मुझे यह सुनिश्चित करने की अनुमति मिली कि लेबल काटा नहीं गया था। पूरी बात: 'heatmap.2 (partb, Rowv = FALSE, Colv = FALSE, dendrogram =' none ', cellnote = partb, notecol = "black", trace =' none ', key = FALSE, lwid = c (.01 , .99), lhei = c (.01, .99), मार्जिन = सी (5,15)) ' –

3

levelplot()lattice पैकेज से आपको रंगीन किंवदंती मिल जाएगी। बिल्कुल वही नहीं जो आप चाहते हैं लेकिन कुछ सोचने के लिए।

4

आप image और text का उपयोग कर सकते हैं। मुझे व्यक्तिगत रूप से image.plotfields पैकेज से पसंद है, क्योंकि यह पक्ष में एक किंवदंती जोड़ता है, लेकिन आप इसे image के साथ भी उपयोग कर सकते हैं।

तो उदाहरण

require(fields) 
# Make a 10x10 matrix 
m = matrix(rnorm(100), nrow=10) 
image.plot(m) 
for (x in 1:10) 
    for (y in 1:10) 
     text((x-1)/9, (y-1)/9, sprintf("%0.2f", m[x,y])) 
13

उदाहरण के लिए के लिए:

m <- matrix(1:30, ncol=6) 
colnames(m) <- paste("C", 1:6, sep="") 
rownames(m) <- paste("R", 1:5, sep="") 
m 

image(1:ncol(m), 1:nrow(m), t(m), col = terrain.colors(60), axes = FALSE) 
axis(1, 1:ncol(m), colnames(m)) 
axis(2, 1:nrow(m), rownames(m)) 
for (x in 1:ncol(m)) 
    for (y in 1:nrow(m)) 
    text(x, y, m[y,x]) 
+0

धन्यवाद! यह सबसे आसान जवाब है, किसी भी अतिरिक्त पैकेज की आवश्यकता नहीं है, मेरे दृष्टिकोण से कोई ggplot2, छोटा और स्पष्ट नहीं है: सही –

संबंधित मुद्दे