{R grid}: как создать многоугольник, наполовину заполненный цветом? - PullRequest
1 голос
/ 06 июля 2010

(Этот вопрос может быть слишком сложным, и, возможно, не стоит его решать - однако, если есть простое решение - мне было бы интересно узнать)

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

require(grid)
grid.newpage()
grid.polygon(x=c((0:4)/10, rep(.5, 5), (10:6)/10, rep(.5, 5)),
             y=c(rep(.5, 5), (10:6/10), rep(.5, 5), (0:4)/10),
             id=rep(1:5, 4),
             gp=gpar(fill=1:5))

Но теперь, что если я хочу, чтобы некоторые полигоны были заполнены только частично (скажем, один будет заполнен на 1/3, а другой заполнен на 1/2)а другой полностью заполнен цветом) Так что это будет выглядеть как частично заполненный стакан воды.

Я думаю, что это можно сделать при построении полигонов, вопрос в том, что если я хочу что-то рассчитать только для новых полигоновисходя из пропорций, которые я задаю - как это можно сделать.

Мотивация для моего вопроса заключается в желании представить еще один слой информации на графиках логотипа (см. функцию seqLogo в пакете seqLogo)

Спасибо.

1 Ответ

1 голос
/ 05 января 2011

Вы можете частично заполнить многоугольник, нарисовав его дважды: сначала нарисуйте все это контуром, но без заливки, затем нарисуйте заливку.Это легче увидеть на простом примере с прямоугольником.

x <- c(left = 0.25, right = 0.75)
y <- c(bottom = 0.1, mid = 0.6, top = 0.9)

grid.newpage()
grid.polygon(x =  rep(x[c("left", "right", "right", "left")], 2),
             y =  y[rep(c("bottom", "top", "bottom", "mid"), each = 2)],
             id = rep(1:2, each = 4),
             gp = gpar(fill = c(NA, "blue")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...