我有一个由2列组成的数据框:度量1和度量2.我在下面提供了一个示例。我想从数据中创建一个热图。为了有效地执行此操作,我需要将每列中的值加起来。对于度量1,我希望bin大小为0.1,对于度量2,我想要bin大小为0.2。我可以使用下面的代码分配垃圾箱。
由此我认为下一个合乎逻辑的步骤是根据测量1和测量2的bin分配创建计数矩阵,然后绘制热图。
我有两个问题:
1)如何更改bin分配的名称?目前它们从1开始。我想命名这些箱子,因此箱子名称反映了箱子中的最大值,而不仅仅是1,2,3等。
2)如何从bin分配创建计数矩阵?
我期待着任何建议。感谢。
#test dataframe
hsim = matrix(rnorm(100 * 2, 1, 0.25), nrow=100, ncol=2, byrow=FALSE)
colnames(hsim) = c("measure1", "measure2")
hsim = as.data.frame(hsim)
#bin measure 1 by bin size of 0.1
FindBin.m1 = function(data){
bin = seq(from=0.52, to=1.6, by=.1) #Specify the bins
data$bin_index = findInterval(data$measure1, bin) #Determine which bin the value is in
}
hsim$m1bin = FindBin.m1(hsim)
#bin measure 2 by bin size of 0.2
FindBin.m2 = function(data){
bin = seq(from=0.4, to=1.6, by=.2) #Specify the bins
data$bin_index = findInterval(data$measure2, bin) #Determine which bin the value is in
}
hsim$m2bin = FindBin.m2(hsim)
#how would I rename the bin indicies in the functions so that they reflect the max number in the bin?
#for example, in FindBin.m1, bin index 1 represents 0.52 to 0.62. I want to name the bin 0.62 not 1
#create a count matrix from the m1 and m2 bin assignments that can be used to plot a heatmap
#plot heatmap
heatmap(matrix.to.plot)
答案 0 :(得分:0)
我想出了如何制作计数矩阵,并尝试使用ggplot作为数据帧。以下是我最后添加到上面的代码。
hsim2 = hsim[,3:4]
hsim2.t = table(hsim2)
#basic heatmap using the count matrix
heatmap(hsim2.t)
hsim2.t2 = as.data.frame(hsim2.t)
#make a nicer looking heatmap
ggplot(hsim2.t2, aes(m1bin, m2bin)) + geom_tile(aes(fill = Freq)) + scale_fill_gradient(low = "white",high = "steelblue")
这对我来说足够好了。我会弄清楚箱子的重命名。希望这有助于其他人尝试做同样的事情。