假设我绘制了由两个多边形组成的以下图:
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)))
给出了:
有没有办法确定p
ggplot对象给每个多边形的颜色?我和str(p)
玩过一些但是没有找到任何有用的东西。
提前感谢任何暗示!
答案 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"
ggplotGrob
制作了grob树getGrob
使用gPath
$gp$fill
显示多边形的颜色。在ggplot2的未来版本中,您可能会更容易获得信息。