关于聊天的一些讨论表明levelplot()
处理热图情况(其中一个或两个变量是离散/分类的)就好了。因此,我们只需要将数据转换为正确的格式。一种方法是至少将y
坐标存储为具有适当水平设置的因子。
首先,按照 OP 的数据线模拟一些数据:
yholes <- c(LETTERS, sort(outer(LETTERS, LETTERS, paste, sep="")))[1:30]
xholes <- seq_along(yholes)
g <- expand.grid(X = xholes, Y = yholes)
set.seed(2)
dat <- with(g, data.frame(Y = factor(Y, levels = yholes),
X = X,
vals = runif(900)))
这使:
R> head(dat)
Y X vals
1 A 1 0.1848823
2 A 2 0.7023740
3 A 3 0.5733263
4 A 4 0.1680519
5 A 5 0.9438393
6 A 6 0.9434750
expand.grid()
调用的原因是levelplot()
,当通过我即将使用的公式方法使用时,每个数据点都需要 aY
和 a (在这种情况下为 900 个)。X
然后可以通过以下简单公式轻松生成该图levelplot()
:
require(lattice)
levelplot(vals ~ X + Y, data = dat)
产生这个: