svg,闪烁的可点击链接 - 不可点击

时间:2016-05-09 17:20:50

标签: r svg shiny

我使用graphviz dot在Shiny中生成svg文件。他们有可点击的链接。我是这样做的。

imageOutput("imagegraph",width = "100%", height = "auto",inline=F)
...
output$imagegraph <- renderImage({
...
list(src = svgGeneratedOnTheFlyByGraphviz.svg,
     align="top",
     width=wid,
     contentType="text/svg+xml"
     )
)

问题在于,虽然通过“新标签中的打开图像”查看的实际图像确实具有可点击链接,但在Shiny生成的div中,没有任何内容可点击。此外,文字不可选,这很奇怪。 (无法发布完整的可重现示例,因为使用Graphviz生成.svg的代码非常多毛,并且具有很多依赖性。) 我试图摆弄包括contentType在内的所有参数,但没有任何帮助。

1 个答案:

答案 0 :(得分:2)

我认为这些链接无法点击,因为您使用img标记来呈现svg。此StackOverflow post表示您可以使用object标记来克服此限制。但是,我认为使用svg标记会提供最佳效果。这是一个最小的例子。根据您的问题,您可以将动态生成的svg包装在HTML(...)

library(shiny)
library(htmltools)

# see Shiny docs
#  http://shiny.rstudio.com/reference/shiny/latest/htmlOutput.html
#  http://shiny.rstudio.com/reference/shiny/latest/renderUI.html
ui <- list(
  uiOutput("svgout")
)

server <- function(input, output, session){
  output$svgout <- renderUI({
    HTML(
"
<svg>
  <a xlink:href = 'https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle'>
    <circle cx='60' cy='60' r='50'/>
  </a>
</svg>
"      
    )
  })
}

shinyApp(ui, server)