5

ここにマトリックスデータがあり、それをで視覚化しました levelplot。プロットは下に配置されます。しかし、私は値をプロットに入れることができませんでした。つまり、この質問を読んだのですが、それでも理解できませんでした。

どうやってやるの ?ありがとう。

4

3 に答える 3

12

リンク先の回答のコードの問題は、レベルプロットの式のオブジェクトの名前がxy、およびの場合にのみ機能することですz

以下は、カスタム パネル関数に渡された引数を処理するためのより標準的なイディオムを使用しているため、より一般的に適用できる例です。

library("lattice")

## Example data
x <- seq(pi/4, 5*pi, length.out=10)
y <- seq(pi/4, 5*pi, length.out=10)
grid <- expand.grid(X=x, Y=y)
grid$Z <- runif(100, -1, 1)

## Write a panel function (after examining 'args(panel.levelplot) to see what
## will be being passed on to the panel function by levelplot())
myPanel <- function(x, y, z, ...) {
    panel.levelplot(x,y,z,...)
    panel.text(x, y, round(z,1))
}

## Try it out
levelplot(Z ~ X*Y, grid, panel = myPanel)

ここに画像の説明を入力

于 2012-12-15T20:10:07.017 に答える
4
mat <- read.csv("J_H2S1T6_PassTraffic.csv", header=F)

y        <- as.numeric(mat[1,-1])
mat      <- mat[-1,-1]
n        <- dim(mat)[1]

ここで変更、新しいスケールを生成します

x <- seq(min(y), max(y), length.out=n)
grid     <- expand.grid(x=x, y=x)
mat      <- as.matrix(mat)
dim(mat) <- c(n*n,1)
grid$z   <- mat

改造はこちら。行列の次元をベクトルに変更して、グリッドに配置します。

mat <- as.matrix(mat)
dim(mat) <- c(n*n,1)
grid$z <- mat

p <- levelplot(z~x*y, grid, 
           panel=function(...) {
             arg <- list(...)
             panel.levelplot(...)
             panel.text(arg$x, arg$y,arg$z)},
           scales = list(y = list(at=y,labels=y),
                         x = list(at=y,labels=y)))

print(p)

ここに画像の説明を入力

于 2012-12-15T20:31:04.883 に答える
2

別のオプションは、 latticeExtralayer()から使用することです。ggplot2愛好家になじみのある演算子を使用して、あるプロットを別のプロットの上に重ねることができます。+

library(latticeExtra)

## Applied to the example data in my other answer, this will produce
## an identical plot
levelplot(Z ~ X*Y, data = grid) +
layer(panel.text(X, Y, round(Z, 1)), data = grid)
于 2012-12-15T20:27:44.840 に答える