我有兴趣自动提取ggplot2对象的图例作为表(而不是图形对象)。让我们用一个例子来说明:
value
现在有一个previous question,它显示了如何提取绘图中使用的颜色:
p <- ggplot(iris, aes(x=Sepal.Length, y= Petal.Length, color=Species)) +
geom_point()
p
但我也对这些颜色在图例中对应的标签感兴趣,即我感兴趣的最终结果如下表所示:
g <- ggplot_build(p)
unique(g$data[[1]]["colour"])
colour
1 #F8766D
51 #00BA38
101 #619CFF
答案 0 :(得分:4)
这样的事情可能是:
#get the colours as mentioned in your question
#and you could get the levels from the plot's data
data.frame(colours = unique(g$data[[1]]["colour"]),
label = levels(g$plot$data[, g$plot$labels$colour]))
输出:
colour label
1 #F8766D setosa
51 #00BA38 versicolor
101 #619CFF virginica
更新
如果有p <- p + scale_color_discrete(labels=c("sp1","sp2","sp3"))
,那么你可以这样做:
g <- ggplot_build(p)
data.frame(colours = unique(g$data[[1]]["colour"]),
label = g$plot$scales$scales[[1]]$labels)
哪个输出:
colour label
1 #F8766D sp1
51 #00BA38 sp2
101 #619CFF sp3
答案 1 :(得分:0)
欢迎来到 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())
隐藏在对象中的 get_labels()
函数为您提供颜色的相应标签。我相信第三行的神奇 '[[4]]' 是因为我的情节也有 x、y、形状和色标。