R 将levelplot上的数字记号更改为字母
我正在研究一些关于我的情节的细节,我发现了一个我无法回避的细节。在我的水平图上有数字记号。现在我想把y轴上的记号改成相应的字母。(即1=A,5=e,27=AA,29=AC,…) 我已经用过了R 将levelplot上的数字记号更改为字母,r,lattice,R,Lattice,我正在研究一些关于我的情节的细节,我发现了一个我无法回避的细节。在我的水平图上有数字记号。现在我想把y轴上的记号改成相应的字母。(即1=A,5=e,27=AA,29=AC,…) 我已经用过了 scales=list( y=list(alternating=3,labels=toupper(c(letters[1],letters[5],letters[10],letters[15]))))) 但我希望它们根据Y轴上的内容而变化,而不是根据我给出的值。 有人能帮我吗 levelplot(
scales=list(
y=list(alternating=3,labels=toupper(c(letters[1],letters[5],letters[10],letters[15])))))
但我希望它们根据Y轴上的内容而变化,而不是根据我给出的值。
有人能帮我吗
levelplot(volcano,main="levelplot(volcano)")
不是一般的解决方案。使用
pretty
自行计算at
y_at <- pretty(seq_len(ncol(volcano)))
y_labels <- c(LETTERS, outer(LETTERS, LETTERS, paste, sep=""))
levelplot(
volcano, main="levelplot(volcano)",
scales=list(y=list(
alternating=3,
labels=y_labels[round(y_at)],
at=y_at
))
)
y\u at一些关于chat的讨论表明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)))
调用expand.grid()
的原因是levelplot()
,当通过公式方法使用时(我将要使用公式方法),每个数据点需要Y
和X
(本例中为900个)
然后,通过levelplot()中的一个简单公式即可轻松生成绘图:
这就产生了:
您可以将touper(字母[1],字母[5],字母[10],字母[15])简化为字母[c(1,5,10,15)]
。
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
require(lattice)
levelplot(vals ~ X + Y, data = dat)