如何从 ggplot2 对象中提取图例标签?

air*_*air 2 r ggplot2

我感兴趣的是自动将 ggplot2 对象的图例提取为表格(而不是图形对象)。我们用一个例子来说明:

p <- ggplot(iris, aes(x=Sepal.Length, y= Petal.Length, color=Species)) +
       geom_point()
p
Run Code Online (Sandbox Code Playgroud)

虹膜示例

现在有一个上一个问题,它展示了如何提取图中使用的颜色:

 g <- ggplot_build(p)
 unique(g$data[[1]]["colour"])

      colour
 1   #F8766D
 51  #00BA38
 101 #619CFF
Run Code Online (Sandbox Code Playgroud)

但我也对这些颜色在图例中对应的标签感兴趣,即我感兴趣的最终结果如下表:

colour    label
#F8766D   setosa
#00BA38   versicolor
#619CFF   virginica
Run Code Online (Sandbox Code Playgroud)

Jef*_*eff 5

欢迎来到 2021 年!

在 ggplot 3.3.3 版本中,我们可以这样做:

g <- ggplot_build(p)
data.frame(colours = unique(g$data[[1]]["colour"]),
             label = gb$plot$scales$scales[[4]]$get_labels()) 
Run Code Online (Sandbox Code Playgroud)

get_labels()隐藏在对象中的函数可以为您提供颜色的相应标签。我相信第三行神奇的“[[4]]”是因为我的绘图也有 x、y、形状和色标。