自动缩放文本大小
Automatic scaling of text size
我想弄清楚如何根据文本的长度来设置文本变量的文本大小。我不知道如何更好地解释它: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)
当前输出:
目标:
什么输入或变量控制大小?在我的解决方案中,我只是创建了一个将 x
乘以 size 参数的函数。
Gruppenname <- "ExampleName"
drawit <- function(x){ggdraw()+draw_text(Gruppenname,
x = 0.1, y = 0.385, color="#9ad3b8",
size=222*x,
family = "Oswald", hjust = 0,vjust = 0)}
drawit(.6)
包 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
我想弄清楚如何根据文本的长度来设置文本变量的文本大小。我不知道如何更好地解释它: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)
当前输出:
目标:
什么输入或变量控制大小?在我的解决方案中,我只是创建了一个将 x
乘以 size 参数的函数。
Gruppenname <- "ExampleName"
drawit <- function(x){ggdraw()+draw_text(Gruppenname,
x = 0.1, y = 0.385, color="#9ad3b8",
size=222*x,
family = "Oswald", hjust = 0,vjust = 0)}
drawit(.6)
包 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