【发布时间】:2013-07-09 14:41:40
【问题描述】:
我想使用“lattice”包的 levelplot 函数将概率分布函数 (PDF) 绘制为 R 中的热图。我将 PDF 实现为函数,然后使用值范围和外部函数的两个向量为 levelplot 生成矩阵。 我希望轴显示我的问题是无法在两个轴上添加适当间隔的刻度线,分别显示两个实际值范围而不是列数或行数。
# PDF to plot heatmap
P_RCAconst <- function(x,tt,D)
{
1/sqrt(2*pi*D*tt)*1/x*exp(-(log(x) - 0.5*D*tt)^2/(2*D*tt))
}
# value ranges & computation of matrix to plot
tt_log <- seq(-3,3,0.05)
tt <- exp(tt_log)
tt <- c(0,tt)
x <- seq(0,8,0.05)
z <- outer(x,tt,P_RCAconst, D=1.0)
z[,1] <- 0
z[which(x == 1),1] <- 1.5
z[1,] <- 0.1
# plot heatmap using levelplot
require("lattice")
colnames(z) <- round(tt, 2)
rownames(z) <- x
levelplot(z, cex.axis=1.5, cex.lab=1.5, col.regions=colorRampPalette(c("blue", "yellow","red", "black")), at=seq(0,1.9,length=200), xlab="x", ylab="time t", main="PDF P(x,t)")
在没有为列和行指定名称的情况下,我收到下面的图,其中刻度线是自然间隔的(与其他 R 函数中使用的一样),但值是行号和列号:
通过为列和行分配名称,我收到以下图,其中刻度线根本不可读,但至少与实际值相对应:
我已经在这个看似微不足道的问题上花费了太多时间,因此非常感谢您的帮助!
【问题讨论】:
-
lattice的doc很全,你看了两遍吗?
?levelplot?xyplot -
是的。例如,它建议
scale作为修改轴的可能参数,即使用 tick.number。但是当我尝试这个时,它既没有任何效果也没有抛出错误。