从ggplot2对象取回多边形颜色

问题描述

| 假设我绘制了以下由两个多边形组成的图:
library(ggplot2)

polys <- data.frame( 
  id = rep(factor(c(\"1\",\"2\")),each=4),x = c(1,2,1,3,2),y = c(1,value = rep(c(3,4),each=4)
) 

(p <- ggplot(polys,aes(x=x,y=y)) + geom_polygon(aes(fill=value,group=id)))
这使 : 有没有一种方法可以确定来自ѭ1gggglot对象的每个多边形的颜色?我在ѭ2上玩了一点,但是没有找到任何有用的方法。 预先感谢您的任何提示!     

解决方法

        您可以通过以下方式做到这一点:
> x <- ggplotGrob(p)
> r <- getGrob(x,gPath(\"geom_polygon\",\"GRID.polygon\"),grep=T,global=T) 
> r
(polygon[GRID.polygon.766],polygon[GRID.polygon.769]) 
> r[[1]]$gp$fill
[1] \"#3B4FB8FF\" \"#3B4FB8FF\" \"#3B4FB8FF\" \"#3B4FB8FF\"
> r[[2]]$gp$fill
[1] \"#B71B1AFF\" \"#B71B1AFF\" \"#B71B1AFF\" \"#B71B1AFF\"
ggplotGrob
制作g树
getGrob
使用
gPath
提取所需的杂种
$gp$fill
显示多边形的颜色。 在ggplot2的未来版本中,可能会更轻松地获取信息。