Можно ли использовать polygon () или его эквивалент на графиках решетки и ggplot2? - PullRequest
7 голосов
/ 29 ноября 2011

Можно ли аннотировать lattice (или ggplot2) рисунки элементами, созданными с помощью polygon() (или элементами, созданными с помощью аналогичной функции) из библиотеки graphics?

Я не слишком знаком с любой библиотекой, за исключением примеров простых графиков, размещенных в Интернете и напечатанных в книге Дипаян Саркара. Поэтому, хотя у меня есть код для того, что я делал в R с библиотекой graphics, указание на релевантные, эквивалентные функции и примеры использования для lattice или ggplot2 было бы особенно полезным. Благодаря.

Ответы [ 2 ]

11 голосов
/ 29 ноября 2011

Вот версия ggplot2 первого примера в ?polygon()

x <- c(1:9,8:1)
y <- c(1,2*(5:3),2,-1,17,9,8,2:9)

ggplot(NULL, aes(1:10, 1:10)) + geom_point() +
  geom_polygon(aes(x, y), fill = "orange", colour = "skyblue", alpha = 0.5)

enter image description here

8 голосов
/ 29 ноября 2011

Существует ряд методов, позволяющих добавлять графические объекты к графикам решетки.В пакете latticeExtra есть методы layer и "+".В самой pkg: lattice можно добавить к существующим графикам с помощью trellis.focus(...), за которыми следуют вызовы панели, такие как panel.polygon().Я использовал это в прошлом, чтобы аннотировать contourplot () s.

Если вы выполните пример с помощью справки (контур), а затем выполните следующие действия:

trellis.focus("panel", 1, 1)
do.call("panel.polygon", list(x =c(5,15,15,5,5), y=c(60,60,90,90,60) ) )
trellis.unfocus()

... вы должны увидеть прямоугольник с вершинами c (5,60), c (15,60), с (15,90), с (5,90) было размещено на панели № 1 графика.Обратите внимание, что нумерация обозначается слева внизу как (1,1).Обычно я не использовал объектную ориентацию для возврата vlaue из этого do.call (), но я подозреваю, что это будет успешно.

enter image description here

...