在ggplot中仅显示一个图例的标签

时间:2018-02-01 21:49:18

标签: r plot ggplot2 legend typography

我正在尝试使用两个单独的传说来格式化一个情节。我有一个形状图例,用于我所有不同的分类,以及它们所属类别的颜色图例。我想仅将形状图例中的分类名称斜体化,而不是斜体颜色图例中的类别名称。到目前为止,我可以使用这一行将所有图例条目设为斜体:

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中是否可行?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以在shape *中设置element_text参数(包括字体),专门为scale_shape_discrete图例自定义标签。

ggplot(df, aes(x, y)) +
  geom_point(aes(shape = species, color = subfam), size = 4) +
  labs(shape = "Species", color = "Subfamily") +
  scale_shape_discrete(guide =
                         guide_legend(label.theme = element_text(angle = 0, face = "italic")))

enter image description here

*此方法也适用于scale_shape_manualguide也有?scale_shape参数。请参阅?scale_shape_manualangle

出于某种原因,我需要在element_text中指定size,否则会出错。您可能还需要设置 ggplot(data = PlotModel1, aes(x = Lon, y = Lat)) + geom_point(aes(color = Conc), shape = "") + stat_density2d(aes(fill = ..level..), n = 100, geom="polygon", contour = TRUE)+ guides(fill = FALSE) + theme_bw()+ xlim(-150, -50)+ ylim(30, 45)+ coord_cartesian(xlim=c(-110, -80),ylim=c(33, 41))