从ggplot2对象获取多边形颜色

时间:2011-05-27 15:00:04

标签: r ggplot2

假设我绘制了由两个多边形组成的以下图:

library(ggplot2)

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

(p <- ggplot(polys, aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id)))

给出了:

enter image description here

有没有办法确定p ggplot对象给每个多边形的颜色?我和str(p)玩过一些但是没有找到任何有用的东西。

提前感谢任何暗示!

1 个答案:

答案 0 :(得分:3)

你可以通过以下方式做到:

> 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"
  1. ggplotGrob制作了grob树
  2. getGrob使用gPath
  3. 提取您想要的grob
  4. $gp$fill显示多边形的颜色。
  5. 在ggplot2的未来版本中,您可能会更容易获得信息。