2

我正在尝试可视化大约 500x500 的上三角矩阵。除此之外,我还尝试旋转该图像,使其看起来像三角形指向上方:

在此处输入图像描述

(这是通过拍摄图形设备的快照然后旋转该图像来实现的)。

在该图像中,每一列和每一行都需要指定它的宽度。

我曾尝试将image()功能与grid包一起使用(使用旋转 45 度的视图面板),但这不起作用。有人知道更好的解决方案吗?

4

1 回答 1

4

这是使用基本图形的简单而愚蠢的方法rasterImage

plotTriMatrix <- function(x) {
  ## clear lower triangle
  x[lower.tri(x)] <- NA

  ## calculate diag
  nr <- nrow(x)
  nc <- ncol(x)
  d <- sqrt(nr^2 + nc^2)
  d2 <- 0.5 * d

  ## empty plot area
  plot(NA, type="n", xlim=c(0, d), ylim=c(0, d), xlab="", ylab="", asp=1)

  ## plot matrix and rotate 45
  rasterImage(as.raster(x),
              xleft=d2, xright=d2+nc, ybottom=-d2, ytop=-d2+nr,
              interpolate=FALSE, angle=45)
}

例子:

set.seed(123)
m <- matrix(runif(100), 10, 10)

plotTriMatrix(m)

在此处输入图像描述

于 2013-09-02T16:54:27.963 回答