यह संभव है, लेकिन कुछ हैकिंग की आवश्यकता है।
सबसे पहले देखते हैं कि कैसे pheatmap
एक हीटमैप खींचता है। आप कंसोल में pheatmap
टाइप करके और आउटपुट के माध्यम से स्क्रॉल करके या वैकल्पिक रूप से edit(pheatmap)
का उपयोग करके जांच सकते हैं।
आप पाएंगे कि रंगों का उपयोग
mat = scale_colours(mat, col = color, breaks = breaks)
scale_colours
समारोह pheatmap
पैकेज का एक आंतरिक समारोह हो रहा है मैप की जाती हैं, लेकिन हम कौन देता है स्रोत का उपयोग
getAnywhere(scale_colours)
कोड की जांच कर सकते
function (mat, col = rainbow(10), breaks = NA)
{
mat = as.matrix(mat)
return(matrix(scale_vec_colours(as.vector(mat), col = col,
breaks = breaks), nrow(mat), ncol(mat), dimnames = list(rownames(mat),
colnames(mat))))
}
अब हमें इसकी आवश्यकता है जाँच scale_vec_colours
, कि पता चला है होना करने के लिए:
function (x, col = rainbow(10), breaks = NA)
{
return(col[as.numeric(cut(x, breaks = breaks, include.lowest = T))])
}
तो, अनिवार्य रूप से, pheatmap
cut
उपयोग कर रहा है जो रंगों का उपयोग करने के लिए तय करने के लिए।
as.numeric(cut(c(1:100, NA, NA), seq(0, 100, 10)))
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
[29] 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6
[57] 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9
[85] 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 NA NA
यह लागू नहीं देता:
की कोशिश करते हैं और अगर वहाँ NAS के आसपास रहे हैं देखो क्या cut
करता है! तो, आपका मुद्दा यहाँ है!
अब, हम इसके आसपास कैसे हो सकते हैं? सबसे आसान बात यह है कि pheatmap
को तापमैप खींचने दें, फिर एनए वैल्यू को जितना चाहें उतना ओवरलैट करें।
तो तुम grid.rect
उपयोग कर सकते हैं एनए पदों के लिए आयतों को जोड़ने के लिए:
pheatmap
समारोह में फिर से देख रहे हैं आप इसे साजिश रचने के लिए grid
पैकेज (R - How do I add lines and text to pheatmap? भी इस सवाल देखें) का उपयोग करता है देखेंगे। मैं क्या करूँगा परीक्षण और त्रुटि द्वारा हीटमैप सीमा के निर्देशांक पाएं, फिर वहां से आयताकारों को साजिश करने के लिए वहां से काम करें।
उदाहरण के लिए:
library(pheatmap)
m<- matrix(c(1:100), nrow= 10)
m[1,1]<- NA
m[10,10]<- NA
hmap <- pheatmap(m, cluster_rows=FALSE, cluster_cols=FALSE)
# These values were found by trial and error
# They WILL be different on your system and will vary when you change
# the size of the output, you may want to take that into account.
min.x <- 0.005
min.y <- 0.01
max.x <- 0.968
max.y <- 0.990
width <- 0.095
height <- 0.095
coord.x <- seq(min.x, max.x-width, length.out=ncol(m))
coord.y <- seq(max.y-height, min.y, length.out=nrow(m))
for (x in seq_along(coord.x))
{
for (y in seq_along(coord.y))
{
if (is.na(m[x,y]))
grid.rect(coord.x[x], coord.y[y], just=c("left", "bottom"),
width, height, gp = gpar(fill = "green"))
}
}
एक बेहतर समाधान ऐसा न करने पर pheatmap
का कोड edit
फंक्शन का उपयोग करके हैक और यह NAS से निपटने के रूप में आप चाहते हैं के लिए ...