我实际上不知道这不起作用!
library(grid)
library(gridSVG)
grid.newpage()
vp <- viewport(width=0.7, height=0.7)
pushViewport(vp)
grid.rect(x = unit(0.5, "npc"), y = unit(0.5, "npc"),
width = unit(0.5, "npc"), height = unit(0.5, "npc"),
just = "centre", hjust = NULL, vjust = NULL,
default.units = "npc", name = "grid.rect.1",
gp=gpar(), draw = TRUE)
这有效:
grid.garnish("grid.rect.1",onmousedown="alert('alert 1!')","pointer-events"="all")
grid.export("gridSVG1.svg")
这不起作用
grid.garnish("grid.rect.1", onmouseover="allwhite()", redraw = TRUE)
grid.script("allwhite = function() {
anobject = document.getElementById('grid.rect.1.1');
anobject.setAttribute('style', 'fill:red');
}", name="allwhite")
grid.export("gridSVG2.svg") # saved to your current working directory
我想要实现的是,如果我用鼠标悬停在矩形上,矩形会用红色填充。
由于这是我第一次遇到js,我不得不问这个愚蠢的问题。我知道这个事实,我将样条命名为“grid.rect.1”,但在脚本部分使用“grid.rect.1.1”。这只是一个绝望的问题,因为事实上,如果我用Google Chrome检查SVG对象,我会发现rect有这个id。
我正在使用谷歌浏览器(36.0.1985.125米)观看SVG对象,似乎有点简单的事情
与往常一样,任何暗示都值得赞赏。
答案 0 :(得分:2)
我看起来无法添加属性,因此您的rect
需要填充gpar
。您还需要修复rect
元素的ID。如果查看源代码,您会看到“grid.rect.1.1”实际上是分组标记。
library(grid)
library(gridSVG)
grid.newpage()
vp <- viewport(width=0.7, height=0.7)
pushViewport(vp)
grid.rect(x = unit(0.5, "npc"), y = unit(0.5, "npc"),
width = unit(0.5, "npc"), height = unit(0.5, "npc"),
just = "centre", hjust = NULL, vjust = NULL,
default.units = "npc", name = "grid.rect.1",
gp=gpar(fill='white'), # add fill parameter
draw = TRUE)
grid.garnish("grid.rect.1", onmouseover="allwhite()", `pointer-events`='all')
grid.script("allwhite = function() {
anobject = document.getElementById('grid.rect.1.1.1');
anobject.setAttribute('style', 'fill:red');
}", name="allwhite")
grid.export("gridSVG2.svg")