我正在尝试可视化大约 500x500 的上三角矩阵。除此之外,我还尝试旋转该图像,使其看起来像三角形指向上方:
(这是通过拍摄图形设备的快照然后旋转该图像来实现的)。
在该图像中,每一列和每一行都需要指定它的宽度。
我曾尝试将image()
功能与grid
包一起使用(使用旋转 45 度的视图面板),但这不起作用。有人知道更好的解决方案吗?
我正在尝试可视化大约 500x500 的上三角矩阵。除此之外,我还尝试旋转该图像,使其看起来像三角形指向上方:
(这是通过拍摄图形设备的快照然后旋转该图像来实现的)。
在该图像中,每一列和每一行都需要指定它的宽度。
我曾尝试将image()
功能与grid
包一起使用(使用旋转 45 度的视图面板),但这不起作用。有人知道更好的解决方案吗?
这是使用基本图形的简单而愚蠢的方法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)