需要帮助进行简单的绘图:在R中混合使用Correlation-Matrix和Heat-map函数

时间:2013-03-05 13:40:03

标签: r matrix plot heatmap

我有一个data.frame或矩阵,我想转入一个简单的情节。 我尝试过热图和corrgram,但那些是复杂的,并且正在做我不想要的事情(缩放等)。

矩阵看起来像这样:

  

___ V1_V2_V3_V4

     

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

     

V2 --- 0 - NA - 4 ---- 2

     

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

     

V4 --- 1 --- 2 --- 3 --- NA

因此,V1与V2,V3和V4有什么共同之处。 我只想要对角线三角形的下半部分,在对角线上想要变量名称 由于有5个值(0到4),我想要在盒子内部从浅到深的红色5种红色。

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

希望有人有个主意! TY

2 个答案:

答案 0 :(得分:1)

此处使用ggplot2的解决方案和@agstudy回答中提供的数据框dat

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

enter image description here

答案 1 :(得分:0)

您可以从levelplot.points包中将其显示为latticeExtra

enter image description here

首先,我重新创建您的数据。我的数据是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())