1

我有一个 data.frame 或矩阵,我想把它变成一个简单的图。我尝试了 heatmap 和 corrgram,但它们很复杂并且正在做我不想要的事情(缩放等)。

矩阵如下所示:

___V1_V2_V3_V4

V1--NA--0---1----1

V2---0---不适用--4----2

V3---1---4---NA---3

V4---1---2---3---不适用

那么 V1 与 V2、V3 和 V4 有多少共同点。我只想要对角三角形的下半部分,并且在对角线中是变量名,并且由于有 5 个值(0 到 4),我想要盒子内从浅红色到深红色的 5 种红色阴影。

我是否必须自己使用 rect() 和 text() 创建它,但由于我的矩阵比这个例子大,我想循环它而不是手动绘制每个框。我可以用ggplot2吗?

希望任何人有一个想法!泰

4

2 回答 2

1

这里的解决方案使用@agstudy 答案中提供ggplot2的数据框。dat

library(ggplot2)
ggplot(dat,aes(x,y,fill=z))+geom_tile()+
  scale_fill_gradient(low="red",high="darkred")

在此处输入图像描述

于 2013-03-05T14:13:52.033 回答
0

您可以levelplot.pointslatticeExtra包装中展示此内容。

在此处输入图像描述

首先,我重新创建您的数据。我的数据是 3 列 x(1:4)、y(1:4) 和 z 输入矩阵的级别。

mm <- rbind(
  c(NA,0,1,1),
  c(0,NA,4,2),
  c(1,4,NA,3),
  c(1,2,3,NA))
dat <- expand.grid(x=1:ncol(mm),y=1:nrow(mm))
dat$z <- as.vector(mm)

library(latticeExtra)
levelplot(z~x*y,data=dat,
       panel=function(...)
       {
         panel.levelplot.points(...,cex=10,pch=22)
         panel.grid()
       },par.settings=ggplot2like())
于 2013-03-05T14:09:22.220 回答