Получить цвет многоугольника обратно из объекта ggplot2 - PullRequest
1 голос
/ 27 мая 2011

Предположим, я рисую следующий график, состоящий из двух полигонов:

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 Ответ

3 голосов
/ 27 мая 2011

Вы можете сделать это:

> 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 делает гробное дерево
  2. getGrob извлекает нужные гробы с помощью gPath
  3. $gp$fill показывает цвет многоугольника.

В будущей версии ggplot2, вероятно, вам будет легче получать информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...