我对自动将 ggplot2 对象的图例提取为表格(而不是图形对象)很感兴趣。让我们用一个例子来说明:
p <- ggplot(iris, aes(x=Sepal.Length, y= Petal.Length, color=Species)) +
geom_point()
p
现在有一个previous question ,它显示了如何提取图中使用的颜色:
g <- ggplot_build(p)
unique(g$data[[1]]["colour"])
colour
1 #F8766D
51 #00BA38
101 #619CFF
但我也对这些颜色在图例中对应的标签感兴趣,即我感兴趣的最终结果是下表:
colour label
#F8766D setosa
#00BA38 versicolor
#619CFF virginica
最佳答案
可能是这样的:
#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
关于r - 如何从 ggplot2 对象中提取图例标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927027/