根据分箱数据生成等高线图

时间:2015-03-30 18:16:28

标签: r contour binning

我希望根据我已装箱的数据生成等高线图。我有两列,一列代表化合物的质量,另一列是其皮尔逊相关系数值。这是我迄今为止所做的一个小例子: -

column1 <- as.numeric(c("100.01", "100.015", "100.017", "100.071", "100.099", "100.111", "100.153", "100.167"))
column2 <- as.numeric(c("0.89", "0.64", "-0.14", "-0.79", "1", "0.31", "-0.27", "0.45"))
test <- cbind(column1, column2)
bin1 <- seq(100, 100.2, by = 0.05)
bin2 <- seq(-1, 1, by = 0.5)
 res <- data.frame(Map(function(x,y) cut(x, breaks=y),
                    as.data.frame(test), list(bin1, bin2)))

 res1 <- cbind(test, res)
 str(res1)
'data.frame':   8 obs. of  4 variables:
 $ column1: num  100 100 100 100 100 ...
 $ column2: num  0.89 0.64 -0.14 -0.79 1 0.31 -0.27 0.45
 $ column1: Factor w/ 4 levels "(100,100.05]",..: 1 1 1 2 2 3 4 4
 $ column2: Factor w/ 4 levels "(-1,-0.5]","(-0.5,0]",..: 4 4 2 1 4 3 2 3

由此我想生成一个等高线图,其中从第一列分箱的值的频率相对于第二列中绘制的值的频率绘制。但是,需要通过将第四列的二进制数分组到第三列来完成。通过这样做: -

combined <- split(res1[, 4], res1[, 3])
str(combined)
List of 4
 $ (100,100.05]  : Factor w/ 4 levels "(-1,-0.5]","(-0.5,0]",..: 4 4 2
 $ (100.05,100.1]: Factor w/ 4 levels "(-1,-0.5]","(-0.5,0]",..: 1 4
 $ (100.1,100.15]: Factor w/ 4 levels "(-1,-0.5]","(-0.5,0]",..: 3
 $ (100.15,100.2]: Factor w/ 4 levels "(-1,-0.5]","(-0.5,0]",..: 2 3

然后,我想生成一个绘图,其中落入bin范围100,100.05的值的频率相对于落入四个独立因子级别的值的频率绘制。因此,如果20个值落入100,100.0的第一个bin中,我想看看有多少这些值落入-1,-0.5然后-0.5,0等的bin中,依次构建3D图。有办法做到这一点吗?我知道我能做到: -

cbind(table(res[, 3])

要获得落入质量箱范围的值的频率,我只是不知道如何提取属于给定质量箱范围的皮尔逊相关系数箱范围内的值。

干杯

1 个答案:

答案 0 :(得分:1)

你可以尝试

lapply(combined, table)

获取第4栏中的箱子频率