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

标签 r ggplot2

此热图代码来自此处之前的答案。我对其进行了更改,使其显示四位小数:

Previous Answer

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))) +
  scale_fill_gradient(low = "white", high = "red")

小数点后四位,我的输出如下所示:

enter image description here

我怎样才能:

  1. 使单元格足够大以包含所有数字
  2. 将单元格设置为正方形,即不是矩形(以便它们看起来像原始答案中的输出)
  3. 强制显示有效数字,例如 0.9 显示为 0.9000

谢谢。

最佳答案

感谢 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()

Result

关于r - 带有值的热图(ggplot2)——如何使单元格成为正方形并自动调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46801762/

相关文章:

r - 如何在分组密度图上添加中值?

r - 更密集的 ggplot 图形

r - 数据框中的条件计算

r - 使用 R 进行阿拉伯文本挖掘

r - 使用 igraph 进行两列二分布局

r - 在数据帧的数字中放置点

r - 使用plyr匹配两个数据框中的列值

r - view_zoom_manual xmin 和 xmax 使用日期 r ggplot

r - 如何自定义facet_wrap的网格调整行为

r - ggplot2 - 引用汇总统计/层