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)))+
比例填充梯度(低=白色,高=红色)
我的输出有四位小数,如下所示:
我怎样才能:
谢谢。谢谢林志强,这是一个完美的作品
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()