Как использовать grid.gradientFill

#r #r-grid

#r #r-сетка

Вопрос:

Я пытаюсь использовать функцию grid.gradientFill из пакета gridSVG, но, к сожалению, я не могу увидеть градиент в моем выводе SVG.

Я не уверен, верен ли мой код или мой браузер не работает (Chrome: 35.0.1916.153 m), не могли бы вы дать какой-нибудь совет?

Вот мой R-код:

 library(grid)
library(gridSVG)

lg <- linearGradient(col = c("black", "white", "black"))

x <- c(0.2,0.2,0.35,0.5,0.65,0.8,0.8,0.65,0.5,0.35)
y <- c(0.5,0.6,0.61,0.7,0.81,0.8,0.7,0.71,0.6,0.51)

s <- c(0,0,-1,0,-1,0,0,-1,0,-1)

grid.newpage()
vp <- viewport(width=0.75, height=0.75)
pushViewport(vp)
grid.rect(gp=gpar(col="blue"))
pushViewport(viewport(layout.pos.col=1, layout.pos.row=1))

grid.rect(x = unit(0.5, "npc"), y = unit(0.5, "npc"),
      width = unit(1, "npc"), height = unit(1, "npc"),
      just = "centre", 
      default.units = "npc",
      gp=gpar(col="green", fill = "blue"), draw = TRUE, name = "tom")
grid.xspline(x = x, y = y,shape=s, open=FALSE, gp=gpar(col=NA, fill="darkred"), name="spline")

grid.gradientFill("spline", lg)
grid.gradientFill("tom", lg)

grid.export("c:/@temp/somekindofgradient.SVG")
 

Я очень заинтересован в том, чтобы придать сплайну градиент…

Любой намек приветствуется 🙂

Ответ №1:

Итак, наконец-то я нашел решение 🙂

Если вы хотите использовать

grid.gradientFill(объект, …)

Объект, в моем вопросе grid.xspline(…) объект, называемый «сплайн», не обязательно должен иметь параметр заполнения, то есть …

Замена

 grid.xspline(x = x, y = y,shape=s, open=FALSE, gp=gpar(col=NA, fill="darkred"), name="spline")
 

с

 grid.xspline(x = x, y = y,shape=s, open=FALSE, gp=gpar(col=NA), name="spline")
 

И есть какой-то красивый градиент 🙂