处理 geom_text 大小
Posted
技术标签:
【中文标题】处理 geom_text 大小【英文标题】:Dealing with geom_text size 【发布时间】:2022-01-15 04:47:40 【问题描述】:我正在使用 ggplot2 geom_tile 构建热图并向每个单元格添加一些文本,如下所示:
我正在使用的代码如下。但是随着热图中图块数量的变化,我需要调整文本大小。有没有办法获得平铺大小并使用它来设置文本大小?还是自动缩放文本?或者甚至构建文本图像并将其缩放为图块上的叠加层?
text.size.corr = 0.9
text.vjust.corr = -0.6
text.size.misc = 0.4
text.vjust.misc = 0.8
text.lineheight.misc = 0.8
ggheatmap =
ggplot(res2.flat,
aes(column, row, fill=cor)
)+
geom_tile(color = "white") +
geom_text( aes( column, row, label=cor ), # add Corr value
color = "black",
size = text.size.corr,
vjust= text.vjust.corr
) +
geom_text( aes( column, row, label=glue("row:column\np=formatPvalue(p)\nn=n") ), # p value
color = "black",
size = text.size.misc,
vjust= text.vjust.misc,
lineheight = text.lineheight.misc
) +
【问题讨论】:
【参考方案1】:有ggfittext
:
library(tidyverse)
library(ggfittext)
data <- tribble(
~x, ~y, ~value, ~p, ~n,
1, 1, 0.78, 0.05, 132,
1, 2, 0.67, 0.04, 421,
2, 1, 0.72, 0.01, 400,
2, 2, 0.23, 0.01, 300
)
data %>%
ggplot(aes(x, y)) +
geom_tile(aes(fill = value)) +
geom_fit_text(aes(label = paste0(p, "\n", n)), size = 1e3)
由reprex package (v2.0.1) 于 2021 年 12 月 10 日创建
【讨论】:
非常感谢。看起来它为每个调用计算了不同的大小,在我看来,这使得结果输出看起来有点业余。但我将深入研究代码,看看我是否能准确地弄清楚它是如何发挥作用的,并可能从中得出一个解决方案。以上是关于处理 geom_text 大小的主要内容,如果未能解决你的问题,请参考以下文章