4

「lattice」パッケージの levelplot 関数を使用して、確率分布関数 (PDF) を R のヒートマップとしてプロットしたいと考えています。PDF を関数として実装し、値の範囲と外部関数の 2 つのベクトルを使用して levelplot の行列を生成しました。私の問題は、列または行の数ではなく、2 つの実際の値の範囲を表示する 2 つの軸に適切な間隔の目盛りを追加できないことです。

# 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 関数で使用されているように)、値は行と列の番号です。 列と行に名前を割り当てずに、次のプロットを受け取ります。目盛りは自然に間隔が空けられていますが (他の R 関数で使用されているように)、値は行と列の番号です。

列と行に名前を割り当てると、次のプロットが表示されます。目盛りはまったく判読できませんが、少なくとも実際の値に対応しています。

列と行に名前を割り当てると、目盛りがまったく読めないが、少なくとも実際の値に対応する次のプロットが表示されます

この一見些細な問題にすでに多くの時間を費やしてきたので、あなたの側からの助けに感謝します!

4

2 に答える 2

5

この基本的な例が役立つかもしれませんが、

d = data.frame(x=rep(seq(0, 10, length=nrow(volcano)), ncol(volcano)), 
               y=rep(seq(0, 100, length=ncol(volcano)), each=nrow(volcano)), 
               z=c(volcano))

library(lattice)

# let lattice pick pretty tick positions
levelplot(z~x*y, data=d)

# specific tick positions and labels
levelplot(z~x*y, data=d, scales=list(x=list(at=c(2, 5, 7, 9), 
                                            labels=letters[1:4])))

# log scale
levelplot(z~x*y, data=d, scales=list(y=list(log=TRUE)))

?xyplot確かに長いページのドキュメントですが、すべて で説明されています。

于 2013-07-11T11:34:15.827 に答える