从ggplot_build对象中提取图例标签时出错

时间:2017-07-13 12:45:40

标签: r ggplot2 colors

我想提取分配给数据点(X,Y)的标签和颜色。我试图使用this solution中提到的方法提取它们。

head(dataPlot)
# Source: local data frame [6 x 3]
# Groups: EFOValue [2]
# 
# # A tibble: 6 x 3
#          X        Y       EFOValue
#      <dbl>    <dbl>          <chr>
# 1 0.505115 0.348486 adipose tissue
# 2 0.365520 0.414446 adipose tissue
# 3 0.365520 0.414446 adipose tissue
# 4 0.526531 0.341508  adrenal gland
# 5 0.526531 0.341508  adrenal gland
# 6 0.412384 0.385316  adrenal gland


p2 <- ggplot(dataPlot, aes(x=X, y=Y, color=EFOValue)) + geom_point()
g2 <- ggplot_build(p2)
data.frame(colours = unique(g2$data[[1]]["colour"]), 
           label = levels(g2$plot$data[, g2$plot$labels$colour])

示例代码按照预期与样本数据集iris一起工作。 对于此数据集dataPlot,输出图如预期。

但是,我注意到g2$plot对象中g2为空,因此无法提取值。请告诉我这可能是什么原因以及如何克服这个ggplot方法中的错误?还有其他方法可以做到这一点:通过为每个级别指定颜色将颜色传递给绘图系统。

1 个答案:

答案 0 :(得分:0)

根据主持人的要求将其作为答案发布,以便将来的用户可以从答案中受益。

我找到了这个问题。问题是用于着色的变量EFOValue不是因子变量。因此,levels()函数会产生一个空槽(或没有所需的输出)。