代码之家  ›  专栏  ›  技术社区  ›  elliot

从ggplot2获取图例名称和颜色?[复制]

  •  1
  • elliot  · 技术社区  · 7 年前

    我有兴趣自动提取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
    
    0 回复  |  直到 8 年前
        1
  •  4
  •   LyzandeR    9 年前

    #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