我有一个用于创建热图的数据集。其中一个问题是,某些单元格中的成员非常少,并且可能具有其他成员未平均的异常值。
为此,我想在单元格中包含(在单元格中心绘图),单元格中实际有多少个例子。
以下是我的热图代码:
library(fields)
library(akima)
x1 <- round(runif(20) * 100,0)
y1 <- round(runif(20) * 100,0)
z1 <- round(runif(20) * 100,0)
s <- interp(x1,y1,z1,
xo = seq(0,100,20)
,yo = seq(0,100,20)
)
image.plot(s)
有什么建议吗?
答案 0 :(得分:2)
计算细胞的角和中心后,
您可以使用findInterval
和table
来计算观察结果。
library(fields)
library(akima)
x1 <- floor(runif(20) * 100)
y1 <- floor(runif(20) * 100)
z1 <- floor(runif(20) * 100)
# Corners of the cells, to count the observations
x0 <- seq(0,100,20)
y0 <- seq(0,100,20)
# Centers of the cells, for the interpolation
x00 <- x0[-length(x0)] + diff(x0) / 2
y00 <- y0[-length(y0)] + diff(y0) / 2
s <- interp(x1,y1,z1, xo=x00, yo=y00)
image.plot(x=x0, y=y0, z=s$z)
counts <- table(
findInterval(x1, x0),
findInterval(y1, y0)
)
# Plot the observations, to check that I have not confused rows and columns
points( x1, y1 )
# Number of observations
text(x=x00[row(counts)], y=y00[col(counts)], labels=counts)