我尝试根据不同列的条件将选择轴标签加粗。在下面的代码中,如果Signif
等于1,则Predictor
轴文本应该加粗。此外,段应该按照Value
的值递增的顺序显示。
但是,这段代码没有将任何轴文本更改为粗体。
library(tidyverse)
library(ggtext)
library(glue)
df <- tibble(Predictor = c("Blue","Red","Green","Yellow"),
Value = c(1,3,2,4),
Signif = c(0,1,0,1))
df <- df %>% mutate(Predictor = ifelse(Signif==1,
glue("<span style = 'font-weight:bold'>{Predictor}</span>"),
glue("<span style = 'font-weight:plain'>{Predictor}</span>"))
)
df %>%
arrange(desc(Value)) %>%
mutate(Predictor=factor(Predictor,
levels=df$Predictor[order(df$Value)])) %>%
ggplot(aes(x=Predictor, y=Value)) +
geom_segment(aes(xend=Predictor, yend=0)) +
theme(axis.text.x = element_markdown())
如果我在最后一行使用element_text()
,并跳过上面的mutate
到markdown步骤:
df %>%
arrange(desc(Value)) %>%
mutate(Predictor=factor(Predictor,
levels=df$Predictor[order(df$Value)])) %>%
ggplot(aes(x=Predictor, y=Value)) +
geom_segment(aes(xend=Predictor, yend=0)) +
theme(axis.text.x = element_text(face = if_else(df$Signif==1, "bold", "plain")))
它加粗了第二个和第四个轴标签,对应于原始df中的Signif
等于1。
如何使正确的轴文本标签以粗体显示?
3条答案
按热度按时间eqzww0vc1#
我希望您的代码能够正常工作,但是您可以使用
<b>
代替<span style...>
:to94eoyn2#
问题是
ggtext
目前只支持有限的CSS属性集。当前支持CSS属性color、font-size和font-family。
但是如果你只想用粗体文本,那么@zephryl的答案是可行的,或者作为第二种选择,使用markdown,即 Package 在
**
内:afdcj2ne3#
所有的答案都很好。然而更深层次的问题(不完全是)“隐藏”在当你在主题元素中使用矢量时出现的警告中(见下图)。
如果您首先重新排列数据框(并重新分配它!),那么您的原始绘图代码将工作-请参见下面的代码。我不鼓励这样做- ggtext::element_markdown的设计正是为了避免在主题中使用向量。
创建于2023年1月29日,使用reprex v2.0.2