如何将值放入R Matrix单元格?

时间:2016-11-01 05:55:40

标签: r

我想将数值ages放入矩阵单元格中,而现在,我将它们放在x-ais上

library("ggplot2")
library("reshape2")
mydata <- mtcars[, c(1,3,4,5,6,7)]
cormat <- round(cor(mydata),2)
melted_cormat <- melt(cormat)
ids = c(1, 2, 3, 4, 5,6)
ages = c(11, 22, 33, 44, 55,66)
ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) +
        scale_x_discrete(labels = ids ) +
        scale_y_discrete(labels = ids)

当前输出:

enter image description here

我的想法

使用geom_text但在最后一个比例

之后失败
  + geom_text(aes(label = ages), size = 3)

各种尝试出错

Error: Aesthetics must be either length 1 or the same as the data (4): label, x, y, fill

在评论中测试rawr的提案

+ geom_text(label = interaction(rep(ages, length(ages)), sep = ', '), size = 3)

使用真实世界数据输出,您可以看到它为所有列重复了第一个小区ID的年龄;也许,它可能足以包括对角线中的第一个年龄,因为否则我们需要每个单元格两个年龄,这使得矩阵看起来很拥挤

enter image description here

尝试调整真实案例的维基答案

我无法将wiki答案及其ifelse调整为以下geom-text工作的实际案例

    geom_text(label = interaction(rep(ages, length(ages)), sep = ', ')) +
操作系统:Debian 8.5
R:3.1.1

2 个答案:

答案 0 :(得分:2)

改为执行此操作(将标签添加到数据对象,然后使用geom_tile然后使用geom_text

gg <- ggplot(data = cbind(melted_cormat,ids, ages), 
             aes(x=Var1, y=Var2, fill=value)) +
        scale_x_discrete(labels = ids ) +
        scale_y_discrete(labels = ids)
 gg + geom_raster( aes(fill=value)) +
      geom_text(  aes(x=Var1, y=Var2, label = ages), color="red", size=3)

这将所需的数据带入命名环境,其中gg-functions将能够看到这些命名列。 geom_raster函数构建一个单元格网格,可以添加属性(&#34;美学和#34;),如颜色或文本。默认情况下,它模仿基本图形函数image,所有热图类型函数都通过使用&#34; fill&#34; -aesthetic的范围构造的色标进行着色而得到。

输出

enter image description here

答案 1 :(得分:1)

Rawr对对角线可视化的评论回答

library("ggplot2")
library("reshape2")
mydata <- mtcars[, c(1,3,4,5,6,7)]
cormat <- round(cor(mydata),2)
melted_cormat <- melt(cormat)
ids = c(1, 2, 3, 4, 5,6)
ages = c(11, 22, 33, 44, 55,66)

ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) + 
     geom_tile() + 
     geom_text(label = ifelse(melted_cormat$Var1 == melted_cormat$Var2, ages, ''))

输出

enter image description here

我无法将wiki答案及其ifelse调整为以下geom-text工作的实际案例

    geom_text(label = interaction(rep(ages, length(ages)), sep = ', ')) +