【发布时间】:2018-03-29 19:56:34
【问题描述】:
此热图代码来自先前的答案。我已将其更改为显示四位小数:
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")
四位小数,我的输出如下所示:
我该怎么做:
- 使单元格足够大以包含所有数字
- 使单元格为正方形,即不是矩形(这样它们看起来就像原始答案中的输出)
- 强制显示有效数字,例如 0.9 显示为 0.9000
谢谢。
【问题讨论】:
-
将
size = 2(或其他一些小数字,取决于您的绘图大小)添加到geom_text()以适应每个单元格中的标签。添加coord_fixed()使单元格呈正方形。我不确定我是否理解你的第三个问题...... -
@Z.Lin 非常感谢,它现在运行良好。使用 3。我本来是要问“强制显示有效数字,以便说 0.9 显示为 0.9000”再次感谢。
-
@Z.Lin 另外,我想知道如何使单元格变大?我试过
geom_tile(aes(fill = coeffvalue), size = 4)但size=似乎并没有增加单元格大小。谢谢。 -
接受的答案here 应该解决有效数字的显示问题。热图的整体高度和宽度取决于您的绘图区域,因此除非您增加绘图的大小,否则单个单元格不会变大。
-
@Z.Lin 非常感谢!现在一切都很好。非常感谢您的帮助。