2011-05-27 117 views
1

想我得出兩個多邊形組成如下情節:獲取多邊形顏色重新

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),但沒有發現任何有用的東西。

在此先感謝您的任何提示!

回答

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提取grobs要使用gPath
  3. $gp$fill顯示多邊形的顏色。

在未來的ggplot2版本中,您可能會更輕鬆地獲取信息。

+0

非常感謝!我不認爲我可以自己弄明白這一點:-) – juba 2011-05-27 15:30:32