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

标签 r ggplot2

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

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

iris example

现在有一个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/

相关文章:

r - 如何删除每列具有最大 2 值的行并使左侧数据框尽可能长?

r - 图(glm.out)使用错误类型的残差来绘制比例位置图?

r - 在rstudio中设置路径

r - 以矢量格式从 R 中导出图像,并为文本和绘图添加单独的图层?

r - 如何将颜色和大小的比例组合成一个图例?

r - 使用 facet_grid 将 "title"添加到我的因子

r - 检查一个时间间隔内的任何日期是否在另一个时间间隔内的任何日期内

R:按两个因素之一的值重新排序 geom_bar(stat = "identity",position=position_dodge())

r - 使用 facet_wrap 时 ggplot 重新排序更改

r - 在线图中标记超出限制的值