【发布时间】:2021-05-03 12:17:36
【问题描述】:
我正在尝试实现一种包装 x 轴标签的解决方案,这样它们就不会重叠。我知道这个问题已经被问过好几次了,还有some good answers。但是,我所见过的解决方案没有解决如何在情节得到调整大小时重新包装标签。
SO 的三个不同答案让我相信这是可以实现的。
-
This solution 写了一个定制的
geom用于调整条形 的标签size以适应条形的宽度,在您调整绘图大小时动态调整。 -
This solution 依赖于名为
ggtext的ggplot2的扩展 包。该解决方案允许在您根据创建element_textbox()调整绘图大小时动态换行绘图的标题。 -
This solution 依赖于另一个名为
ggfittext的扩展。它显示了在调整绘图大小时,条形内标签的size如何动态变化以适应条形的尺寸。本质上,它解决了与上述解决方案 (1) 相同的问题,但功能更强大。事实上,这是让我充满希望的功能,它依赖于通用解决方案geom_fit_text()来将文本放入矩形内,而不仅仅是geom_bar()s。
一些可使用的演示数据
1.只是为了显示 x 轴标签重叠时的典型输出
library(tidyverse)
my_mtcars <-
mtcars[15:20,] %>%
rownames_to_column("cars")
my_mtcars %>%
ggplot(aes(x = cars, y = mpg, fill = cars)) +
geom_bar(stat = "identity")
由reprex package (v0.3.0) 于 2021-01-29 创建
2。当我们使用ggfittext 时,我们可以看到条形内的标签如何缩小以适应条形
library(tidyverse)
library(ggfittext)
#> Warning: package 'ggfittext' was built under R version 4.0.3
my_mtcars <-
mtcars[15:20,] %>%
rownames_to_column("cars")
my_mtcars %>%
ggplot(aes(x = cars, y = mpg, fill = cars)) +
geom_bar(stat = "identity") +
geom_bar_text(aes(label = cars),
color = "blue",
vjust = 1,
size = 7 * ggplot2::.pt,
min.size = 0,
padding.x = grid::unit(0, "pt"),
padding.y = grid::unit(0, "pt"))
#> Warning: Ignoring unknown aesthetics: label
由reprex package (v0.3.0) 于 2021-01-29 创建
3。 ggfittext 具有促进文本换行的 reflow 参数
library(tidyverse)
library(ggfittext)
#> Warning: package 'ggfittext' was built under R version 4.0.3
my_mtcars <-
mtcars[15:20,] %>%
rownames_to_column("cars")
my_mtcars %>%
ggplot(aes(x = cars, y = mpg, fill = cars)) +
geom_bar(stat = "identity") +
geom_bar_text(aes(label = cars),
color = "blue",
vjust = 1,
size = 7 * ggplot2::.pt,
min.size = 0,
padding.x = grid::unit(0, "pt"),
padding.y = grid::unit(0, "pt"),
reflow = TRUE ## <--------------- added this
)
#> Warning: Ignoring unknown aesthetics: label
由reprex package (v0.3.0) 于 2021-01-29 创建
我的问题
我不知道该怎么做,但是我们能否通过某种方式让ggfittext 为我们完成繁重的工作,从而动态地包装/调整大小/重新调整 x 轴标签?以天真的方式,我看到这个,条内的文本已经以正确的方式呈现,我们可以以某种方式将这个呈现“复制”到轴标签吗?
【问题讨论】:
-
可能在 ggfittext 的 github 上的相关问题:github.com/wilkox/ggfittext/issues/14