我想提取分配给数据点(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方法中的错误?还有其他方法可以做到这一点:通过为每个级别指定颜色将颜色传递给绘图系统。
答案 0 :(得分:0)
根据主持人的要求将其作为答案发布,以便将来的用户可以从答案中受益。
我找到了这个问题。问题是用于着色的变量EFOValue
不是因子变量。因此,levels()
函数会产生一个空槽(或没有所需的输出)。