我正在使用pheatmap一段时间,但是这次我遇到了一个数据集,该数据集的分布范围太广。因此,我尝试使用分位数功能进行中断,并且这种方法行得通,但是仍然存在一些错误。图例的刻度完全是,它仅显示值和两端之一的颜色(最高值)。我不确定是否要解释自己。最低值为0,我的休息时间如下:
0% 30% 40% 50% 60% 70% 80% 90% 100%
0.0e + 00 2.0e-172 2.0e-132 8.0e-96 4.0e-79 1.0e-67 4.0e-55 5.2e-39 3.0e-05
白色的那些没有任何数值(NA)。我试图解决该问题,但无法解决。不确定是否有任何建议,但是对此我将非常感谢。
#read table
data = read.csv("",stringsAsFactors = FALSE, row.names = 1)
head(data)
#define matrix
mat = as.matrix(data)
quantile_breaks <- function(xs, n = 10) {
breaks <- quantile(xs, probs = seq(0, 1, length.out = n),na.rm=T)
breaks[!duplicated(breaks)]
}
mat_breaks <- quantile_breaks(mat, n = 11)
mat_breaks
pheatmap(
mat = mat,
color = plasma(length(mat_breaks)-1),
breaks = mat_breaks,
border_color = NA,
show_colnames = T,
show_rownames = T,
cluster_rows = F,
cluster_cols = F,
drop_levels = T,
fontsize = 14,
na_col ="white",
fontsize_col = 10,
fontsize_row = 2,
)
我附上了热图和一个可重现的示例。
,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31,32 1,9.00E-65,1.00E-83 ,,, 9.00E-30 ,,, 0,0,0 ,,, 3.00E-05,,2.00E-51 ,,,,, 6.00E- 119,,4.00E-36,6.00E-163,0 ,,,,, 2,1.00E-74,1.00E-47,,3.00E-68,,6.00E-20 ,,, 0,0,0,4.00E-20 ,,, 1.00E-05 ,,,,,, ,5.00E-73,8.00E-53,7.00E-35,4.00E-104,0 ,,,, 8.00E-50
谢谢