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

时间:2015-09-13 23:31:53

标签: r ggplot2 axis

有没有办法改变轴标题部分的样式,同时保持其余部分不变?就我而言,我怎么能用斜体来表示 "细菌X"在Y轴标题?据我所知,命令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"))

3 个答案:

答案 0 :(得分:42)

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

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

答案 1 :(得分:15)

可以使用ggtext软件包中的element_markdown()来实现。

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())

请注意y轴标题中*周围的bacteria X。将axis.title.y设置为element_markdown具有将轴标题渲染为markdown的效果。因此,*中的文本将显示为斜体

一个更简单的解决方案是使用mdthemes程序包,该程序包提供的主题可以直接将文本解释为makrdown,即无需调用theme。这是一个例子。

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

enter image description here

答案 2 :(得分:0)

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

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

我不需要使用bquote()函数。波浪号为引号之外的术语产生单个空格。