首页 > 解决方案 > 自动缩放文本大小

问题描述

我试图弄清楚如何根据文本变量的长度来制作文本变量的文本大小。我不知道如何更好地解释它:D

我有一个文本字段,用户可以在其中输入文本。我希望文本始终是某个文本框中的“最大可能”大小,但永远不要超出文本框的边缘。因此,一旦文本具有一定长度,就会自动缩小文本大小。

文本框的边框不是在 R 中定义的,而是通过“背景”定义的——有点难以解释。可以说,我有一个背景,我想在其上绘制文本,它定义了某些边界。

根据座右铭“如果在 X 和 Y 字符之间输入,则使用大小 Z”,我曾考虑过简单地为某些“数量带”预定义大小。但是,我想问您是否知道更清洁的解决方案。

感谢你并致以真诚的问候

我的代码:

Gruppenname <- "ExampleName"

Ausgabe <- ggdraw() +
draw_text(Gruppenname, x = 0.1, y = 0.385, color="#9ad3b8", size=140, family = "Oswald", hjust = 0,vjust = 0)

当前输出: 在此处输入图像描述

目标:

在此处输入图像描述

标签: rfont-sizecowplot

解决方案


ggfittext提供了一个功能来精确地做到这一点:

library(cowplot)
library(ggfittext)
library(ggplot2)

Gruppenname <- "ExampleName"

x.low <- 0.1
x.high <- 0.8
y.low <- 0.385
y.high <- 0.8

Ausgabe <- ggdraw() +
  geom_rect(aes(xmin=x.low,ymin=y.low,xmax=x.high,ymax=y.high)) +
  geom_fit_text(aes(xmin=x.low,ymin=y.low,
                    xmax=x.high,ymax=y.high,label=Gruppenname),
                place="bottomleft",grow=T)

Ausgabe

在此处输入图像描述

Gruppenname <- "LongerExampleName"

Ausgabe <- ggdraw() +
  geom_rect(aes(xmin=x.low,ymin=y.low,xmax=x.high,ymax=y.high)) +
  geom_fit_text(aes(xmin=x.low,ymin=y.low,xmax=x.high,ymax=y.high,label=Gruppenname),place="bottomleft",grow=T)

Ausgabe

在此处输入图像描述


推荐阅读