Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 带数值的热图(ggplot2)——如何使单元格成正方形并自动调整大小?_R_Ggplot2 - Fatal编程技术网

R 带数值的热图(ggplot2)——如何使单元格成正方形并自动调整大小?

R 带数值的热图(ggplot2)——如何使单元格成正方形并自动调整大小?,r,ggplot2,R,Ggplot2,这张热图的代码来自前面的答案。我已将其更改为显示四位小数: 库(tidyverse) ##制作数据 dat% 行名称到列('Var1')%>% 聚集(Var2,值,-Var1)%>% 变异( Var1=系数(Var1,标高=1:10), Var2=系数(gsub(“V”,Var2),级别=1:10) ) ##绘图数据 ggplot(dat2,aes(Var1,Var2))+ geom_瓷砖(aes(填充=值))+ 几何图形文本(aes(标签=圆形(值,4)))+ 比例填充梯度(低=白色,高=红

这张热图的代码来自前面的答案。我已将其更改为显示四位小数:

库(tidyverse)
##制作数据
dat%
行名称到列('Var1')%>%
聚集(Var2,值,-Var1)%>%
变异(
Var1=系数(Var1,标高=1:10),
Var2=系数(gsub(“V”,Var2),级别=1:10)
)
##绘图数据
ggplot(dat2,aes(Var1,Var2))+
geom_瓷砖(aes(填充=值))+
几何图形文本(aes(标签=圆形(值,4)))+
比例填充梯度(低=白色,高=红色)
我的输出有四位小数,如下所示:

我怎样才能:

  • 使单元格足够大以包含所有数字
  • 使单元格为方形,即不是矩形(使其看起来像原始答案中的输出)
  • 强制显示有效数字,使0.9显示为0.9000

  • 谢谢。

    谢谢林志强,这是一个完美的作品

    library(tidyverse)
    
    ## make data
    dat <- matrix(rnorm(100, 3, 1), ncol=10)
    
    ## reshape data (tidy/tall form)
    dat2 <- dat %>%
      tbl_df() %>%
      rownames_to_column('Var1') %>%
      gather(Var2, value, -Var1) %>%
      mutate(
        Var1 = factor(Var1, levels=1:10),
        Var2 = factor(gsub("V", "", Var2), levels=1:10)
      )
    
    ## plot data
    ggplot(dat2, aes(Var1, Var2)) +
      geom_tile(aes(fill = value)) + 
      geom_text(aes(label = round(value, 4)), size = 2) +
      scale_fill_gradient(low = "white", high = "red") + coord_fixed()
    
    库(tidyverse)
    ##制作数据
    dat%
    行名称到列('Var1')%>%
    聚集(Var2,值,-Var1)%>%
    变异(
    Var1=系数(Var1,标高=1:10),
    Var2=系数(gsub(“V”,Var2),级别=1:10)
    )
    ##绘图数据
    ggplot(dat2,aes(Var1,Var2))+
    geom_瓷砖(aes(填充=值))+
    几何图形文本(aes(标签=圆形(值,4)),大小=2)+
    比例填充梯度(低=白色,高=红色)+坐标固定()
    

    size=2
    (或其他一些小数字,取决于打印大小)添加到
    geom_text()
    ,以便在每个单元格中放置标签。添加
    coord\u fixed()
    使单元格成为正方形。我不确定我是否理解你的第三个问题……。@Z.Lin非常感谢你,它现在运行得非常好。和3。我本想问“强制显示有效数字,使0.9显示为0.9000”,再次感谢。@Z.Lin还有,我想知道如何使单元格变大?我尝试了
    geom_tile(aes(fill=coeffvalue),size=4)
    但是
    size=
    似乎没有增加单元格大小。谢谢。接受的答案应该是有效数字的显示。热图的整体高度和宽度取决于绘图区域,因此除非您增加绘图的大小,否则单个单元格不会变大。@Z.Lin非常感谢!现在一切都很好。非常感谢你的帮助。
    library(tidyverse)
    
    ## make data
    dat <- matrix(rnorm(100, 3, 1), ncol=10)
    
    ## reshape data (tidy/tall form)
    dat2 <- dat %>%
      tbl_df() %>%
      rownames_to_column('Var1') %>%
      gather(Var2, value, -Var1) %>%
      mutate(
        Var1 = factor(Var1, levels=1:10),
        Var2 = factor(gsub("V", "", Var2), levels=1:10)
      )
    
    ## plot data
    ggplot(dat2, aes(Var1, Var2)) +
      geom_tile(aes(fill = value)) + 
      geom_text(aes(label = round(value, 4)), size = 2) +
      scale_fill_gradient(low = "white", high = "red") + coord_fixed()