【发布时间】:2018-07-12 08:11:17
【问题描述】:
我正在尝试用两个单独的图例来格式化一个情节。我有一个形状图例,用于我所有不同的分类群,还有一个颜色图例,用于它们所属的类别。我只想斜体化形状图例中的分类单元名称,而不是斜体化颜色图例中的类别名称。到目前为止,我可以使所有图例条目斜体或不使用此行:
plot + theme(legend.text = element_text(face = "italic"))
但我不知道如何仅指定形状图例。我认为theme() 不合适,因为它改变了整个情节的主题。我还查看了guides(),但它似乎没有指定图例标签字体的选项。
一些样本数据和一个图:
species <- c("M. mulatta", "P. ursinus", "C. mitis", "C. guereza")
subfam <- c("Cercopithecine", "Cercopithecine", "Cercopithecine", "Colobine")
x <- rnorm(4, 1:10)
y <- rnorm(4, 2:20)
df <- data.frame(cbind(species, subfam, x, y))
ggplot(df, aes(x, y)) + geom_point(aes(shape = species, color = subfam), size = 4) +
labs(shape = "Species", color = "Subfamily")
总之,我想让物种名称斜体,而不是亚科名称。看起来应该很简单......这在ggplot中甚至可能吗?
提前致谢!
【问题讨论】:
-
这是相当困难的,涉及在绘图之前对原始图形对象 (grobs) 的操作。我倾向于对亚科使用刻面,对物种使用颜色,因此只生成一个图例:
library(tidyverse); df %>% rename(Species = species, Subfamily = subfam) %>% ggplot(aes(x, y)) + geom_point(aes(color = Species)) + facet_wrap(~Subfamily) + theme(legend.text = element_text(face = "italic"))。
标签: r plot ggplot2 legend typography