r - ggfittext 可以自动选择文本旋转吗?

标签 r ggplot2

我有一个标有矩形的图。为确保文本保留在矩形内,我使用了 ggfittext 包。示例如下:

library(ggplot2)
library(ggfittext)

df <- data.frame(
  xmin = c(1000, 4000), xmax = c(3000, 5000),
  ymin = c(1, 3), ymax = c(2, 5),
  label = "My Label"
)

p <- ggplot(df, aes(xmin = xmin, xmax = xmax,
                    ymin = ymin, ymax = ymax)) +
  geom_rect(fill = "grey60")
p + geom_fit_text(aes(label = label),
                  size = 40)

您可能会注意到,如果旋转右侧第二个矩形中的标签,它会更适合,并且标签不需要缩小太多。我可以轻松地手动完成:

p + geom_fit_text(aes(label = label),
                  size = 40, angle = c(0, 90))

reprex package 创建于 2021-09-29 (v2.0.1)

但是,我想自动检测文本放置是水平放置还是垂直放置更好。是否可以在 ggfittext 或替代包中执行此操作?我正在寻找视觉维度比数据维度更重要的答案:示例中的这些矩形在数据空间中比它们的高度宽得多,但在视觉空间中不是。

最佳答案

我是 ggfittext 的作者。 ggfittext 无法按照您描述的方式自动旋转文本,而且我不知道有任何软件包可以做到这一点。

geom_fit_text() 确实包含一个 reflow 参数,该参数将重排多词文本以更好地适应框。这不能通过简单地缩短行长直到文本适合,但会找到使文本的纵横比最接近框的纵横比的行长。显然,这对于较长的文本标签更有用。

library(ggplot2)
library(ggfittext)

df <- data.frame(
  xmin = c(1000, 4000), xmax = c(3000, 5000),
  ymin = c(1, 3), ymax = c(2, 5),
  label = "My Label"
)

ggplot(df, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax)) +
  geom_rect(fill = "grey60") +
  geom_fit_text(aes(label = label), size = 40, reflow = TRUE)

reprex package 创建于 2021-12-18 (v2.0.1.9000)

关于r - ggfittext 可以自动选择文本旋转吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69380304/

相关文章:

r - 如何使用 fitdistr 确定左截断分布的威 bool 参数?

r - 是否可以在 geom_raster() 上强制缩放?

r - 找到 r 中第 n 个最小值的列

java - R 中的 Weka 不工作 - 无法通过 WPM 加载 weka 包

r - 带有分隔符而不是刻度的连续颜色条

r - 在面图中添加模型参数,即以斜体字体多行打印的参数,但其索引以普通字体和下标显示

r - 如何在列表中的多个数据框中绘制特定列?

r - 两种处理之间的ggplot背景突出显示

r - 删除 R 中包含特定字符串的行

r - 将 stat_summary 与 ggplot 一起使用时更改条宽