如何从ggplot2对象中提取图例标签? [英] How to extract the legend labels from a ggplot2 object?
问题描述
我感兴趣的是将ggplot2对象的图例自动提取为表格(而不是图形对象)。我们来举个例子:
p < - ggplot(iris,aes(x = Sepal.Length,y = Petal。长度,颜色=物种))+
geom_point()
p
现在有一个,它展示了如何提取图中使用的颜色:
<$ p ($ g $ p
$ b $ 1#F8766D
51#00BA38
101#619CFF
但我也是对这些颜色对应于图例中的标签感兴趣,即我最感兴趣的是下表:
颜色标签
#F8766D setosa
#00BA38 versicolor
#619CFF virginica
可能是这样的:
#获取问题中提到的颜色
#并且您可以获取关卡中的颜色从图的数据
data.frame(colors = unique(g $ data [[1]] [color]),
label = levels(g $ plot $ data [,g $ plot $标签$ color]))
输出:
color label
1#F8766D setosa
51#00BA38 versicolor
101#619CFF virginica
更新:
如果存在 p < - p + scale_color_discrete (labels = c(sp1,sp2,sp3))
然后你可以这样做:
g data.frame(colors = unique(g $ data [[1]] [color]),
label = g $ plot $ scale $ scales [[1]] $ labels)
输出:
c olour label
1#F8766D sp1
51#00BA38 sp2
101#619CFF sp3
I am interested in automatically extracting the legend of ggplot2 object as a table (not as a graphics object). Let's illustrate with an example:
p <- ggplot(iris, aes(x=Sepal.Length, y= Petal.Length, color=Species)) +
geom_point()
p
Now there is a previous question, which shows how one can extract the colours used in the plot:
g <- ggplot_build(p)
unique(g$data[[1]]["colour"])
colour
1 #F8766D
51 #00BA38
101 #619CFF
But I am also interested in the labels which those colours correspond to in the legend, i.e. the final result I would be interested in is the following table:
colour label
#F8766D setosa
#00BA38 versicolor
#619CFF virginica
Something like this maybe:
#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]))
Output:
colour label
1 #F8766D setosa
51 #00BA38 versicolor
101 #619CFF virginica
Update:
If there is a p <- p + scale_color_discrete(labels=c("sp1","sp2","sp3"))
then you could do:
g <- ggplot_build(p)
data.frame(colours = unique(g$data[[1]]["colour"]),
label = g$plot$scales$scales[[1]]$labels)
Which outputs:
colour label
1 #F8766D sp1
51 #00BA38 sp2
101 #619CFF sp3
这篇关于如何从ggplot2对象中提取图例标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!