如何将轴标题的部分(一个或两个单词)斜体化

eze*_*eze 38 axis r ggplot2

有没有办法改变轴标题的一部分的样式,同时保持其余部分不变?在我的情况下,我怎么能
在y轴标题中将"细菌X" 斜体化?据我所知,该命令theme(axis.title.y=element_text(face="italic"))只能改变整个y-aixs的标题,是吗?

ggplot(fig1,aes(x=cf,y=Freq,fill=Var1)) +
geom_bar(stat="identity") +
labs(x="Groups",y="No. of bacteria X isolates with corresponding types",fill="Var1") +
theme(axis.title.y=element_text(face="italic"))
Run Code Online (Sandbox Code Playgroud)

Her*_*oka 49

你可以做一个像这样的表达式:

my_y_title <- expression(paste("No. of ", italic("bacteria X"), " isolates with corresponding types"))
.... + labs(y=my_y_title)
Run Code Online (Sandbox Code Playgroud)

  • 当部分标题文本(内部粘贴)来自工作区中的变量时,这是如何工作的?我注意到,当我将其他变量带入粘贴时,“粘贴”按字面解释,标题以“粘贴(图表标题...”开头) (4认同)
  • @Bobby `word &lt;- "the word in italic"` 后跟 `bquote('Example map with'~italic(.(word)))` 在 /sf/ask/2234958911/ 找到-with-a-variable-in-ggplot2-title-expression#31928067 (3认同)
  • 在 `ggtitle()` 中调用此变量也无法正确解释。在“bquote(custom_title)”、“bquote(.(custom_title))”或“bquote(~.(custom_title))”中使用不会产生任何接近所需结果的结果。这个答案可能不是最新的,应该进行编辑以提供您提到的示例,RFelber。 (2认同)

Tom*_*mmy 23

这可以使用能够实现element_markdown()ggtext包。

ggplot(fig1, aes(cf, Freq, fill = Var1)) +
  geom_bar(stat = "identity") +
  labs(
    x = "Groups",
    y = "No. of *bacteria X* isolates with corresponding types",
    fill = "Var1"
  ) +
  theme(axis.title.y = ggtext::element_markdown())
Run Code Online (Sandbox Code Playgroud)

请注意y 轴标题中的*周围bacteria X。设置axis.title.yelement_markdown具有将轴标题呈现为降价的效果。因此,里面的文字*将以斜体显示

一个更简单的解决方案是使用mdthemes提供将文本解释为开箱即用的主题的包,即不需要调用theme. 这是一个例子。

ggplot(mtcars, aes(hp, mpg)) +
  geom_point() +
  mdthemes::md_theme_classic() +
  labs(title = "**Bold Title**", x = "*Italics axis label*")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


TCS*_*TCS 15

我相信 RFelber 的建议正是您所追求的。尝试这个:

labs(x="Groups",
     y=expression('No. of'~italic(bacteria X)~'isolates with corresponding types'),
     fill="Var1")
Run Code Online (Sandbox Code Playgroud)

我不需要使用该bquote()功能。波浪号为引号之外的术语生成单个空格。

  • 我需要在我的代码中添加反引号。我不能在这里准确地显示它,因为反引号是 SO 上代码的降价符号,我不确定如何为我的代码转义它,所以我将简单地粘贴代码:表达式('温度范围内的天数of'~斜体(`致病疫霉`)~'在弗吉尼亚州哈利法克斯。') (2认同)