我试图想象一个大约500x500的上三角矩阵。除此之外,我还试图旋转该图像,使其看起来像三角形朝上:
(这是通过拍摄图形设备的快照然后旋转该图像来实现的)。
在该图像中,每列和每行都需要指定宽度。
我尝试将image()
函数与grid
包一起使用(使用旋转45度的视图面板),但这不起作用。有人知道更好的解决方案吗?
答案 0 :(得分: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)