【发布时间】:2023-01-30 04:13:21
【问题描述】:
我正在尝试根据来自不同列的条件将选择轴标签设为粗体。在下面的代码中,如果 Signif 等于 1,则 Predictor 轴文本应为粗体。此外,段应按Values 增加值的顺序出现。
但是,此代码并未将任何轴文本更改为粗体。
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 降价步骤:
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")))
它将第 2 和第 4 轴标签加粗,对应于原始 df 中的 Signif 等于 1。
如何让正确的轴文本标签以粗体显示?
【问题讨论】: