如何在ggplot2的图例中斜体化一个类别

Posted

技术标签:

【中文标题】如何在ggplot2的图例中斜体化一个类别【英文标题】:How to italicize one category in a legend in ggplot2 【发布时间】:2018-07-19 04:41:08 【问题描述】:

对于我在 ggplot2 中的图例,我有 2 个类别,如何仅将 1 个类别斜体而不将其他类别斜体?

例如,考虑以下情节。如何设置斜体“手动”?

library(ggplot2)

ggplot(data = mtcars, aes(x = as.factor(am), fill = as.factor(am))) + 
  geom_bar() + 
  scale_fill_discrete(
    "Transmission",
    breaks = c(0, 1),
    labels = c("Automatic", "Manual")
  )

由reprex package (v0.3.0) 于 2020-01-01 创建

【问题讨论】:

【参考方案1】:

您可以使用expressionitalic 在标签上创建斜体文本。

library(ggplot2)

ggplot(data = mtcars, aes(x = as.factor(am), fill = as.factor(am))) + 
  geom_bar() + 
  scale_fill_discrete(
    "Transmission",
    breaks = c(0, 1),
    labels = c("Automatic", expression(italic("Manual")))
  )

由reprex package (v0.3.0) 于 2020-01-01 创建

【讨论】:

真正有帮助的回复 r.bot,感谢发帖!只是想注意,如果您想让两个图例条目左对齐,您可以添加以下内容:+ theme(legend.text.align = 0)。有关更多信息,请参阅此条目:***.com/questions/26781676/…【参考方案2】:

我一直在研究一种更简单、更灵活的方法来实现这个目标,通过 ggtext 包在 ggplot 中启用 markdown 样式。目前正在开发中,但应该很快(2020 年初)发布到 CRAN。

library(ggplot2) # may require: remotes::install_github("tidyverse/ggplot2")
library(ggtext)  # remotes::install_github("clauswilke/ggtext")

ggplot(data = mtcars, aes(x = as.factor(am), fill = as.factor(am))) + 
  geom_bar() + 
  scale_fill_discrete(
    "Transmission",
    breaks = c(0, 1),
    labels = c("Automatic", "*Manual*")
  ) +
  theme(legend.text = element_markdown())

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

【讨论】:

以上是关于如何在ggplot2的图例中斜体化一个类别的主要内容,如果未能解决你的问题,请参考以下文章

ggplot中只有一个图例的斜体标签

如何在ggplot2中移动或定位图例

从 ggplot2 中的图例类别中删除 stat_summary 符号

如何更改按变量因子分类的ggplot的图例标题

如何在ggplot2中使用希腊符号?

如何在ggplot2中添加一个计算高于或低于某个值的点的图例?火山图