gpt4 book ai didi

r - 有条件地更改 axis.text 字体系列和字体大小会产生不需要的 'gap'

转载 作者:行者123 更新时间:2023-12-01 16:29:10 25 4
gpt4 key购买 nike

我需要根据条件更改条形图特定 x 轴元素的系列和大小。

我可以使用以下方法成功修改脸部:

library(ggplot2)
ggplot(iris, aes(Species, Petal.Length)) +
geom_boxplot() +
coord_flip() +
theme(axis.text.y = element_text(face = ifelse(levels(iris$Species)=="setosa","bold","italic")))

根据建议:https://stackoverflow.com/a/20609878/8534926

但是,由于某种原因,当我尝试应用系列大小时,轴和名称之间会创建一个空白。

ggplot(iris, aes(Species, Petal.Length)) + 
geom_boxplot() + coord_flip() +
theme(axis.text.y = element_text(family = ifelse(levels(iris$Species)=="setosa","sans","mono")))

ggplot(iris, aes(Species, Petal.Length)) + 
geom_boxplot() + coord_flip() +
theme(axis.text.y = element_text(size = ifelse(levels(iris$Species)=="setosa", 10, 20)))

我尝试使用边距对其进行编辑,但修改名称时可能会出现重叠(例如使用 Shiny 的应用程序)。

这个差距是多少?可以删除吗?

最佳答案

该问题已在即将发布的 ggplot2 3.3.0 中得到解决,但现在会触发警告,因为这种格式化轴文本的方法并不可靠,并且可能在将来的任何时候停止工作。

library(ggplot2) # v 3.3.0 or higher

# discouraged, triggers warning message
ggplot(iris, aes(Species, Petal.Length)) +
geom_boxplot() + coord_flip() +
theme(
axis.text.y = element_text(
size = ifelse(levels(iris$Species)=="setosa", 10, 20)
)
)
#> Warning: Vectorized input to `element_text()` is not officially supported.
#> Results may be unexpected or may change in future versions of ggplot2.

作为替代方案,正在开发的 ggtext 包试图通过将格式化指令编码到文本标签中来提供解决此问题的原则方法。

library(ggtext) # remotes::install_github("clauswilke/ggtext")
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(glue)
#>
#> Attaching package: 'glue'
#> The following object is masked from 'package:dplyr':
#>
#> collapse

iris %>%
mutate(
Species = ifelse(
Species == "setosa",
"<span style = 'font-size:10pt'>setosa</span>",
glue("<span style = 'font-size:20pt'>{Species}</span>")
)
) %>%
ggplot(aes(Species, Petal.Length)) +
geom_boxplot() + coord_flip() +
theme(axis.text.y = element_markdown())

reprex package于2020年1月16日创建(v0.3.0)

关于r - 有条件地更改 axis.text 字体系列和字体大小会产生不需要的 'gap',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com