【问题标题】:Using knitr (from .Rhtml to html): how to embed a link in an R Figure?使用 knitr(从 .Rhtml 到 html):如何在 R 图中嵌入链接?
【发布时间】:2012-12-21 16:28:28
【问题描述】:

我正在使用 knit 将我的 .Rhtml 文件转换为 .html 文件。 我正在调用一个名为 Q1 的块的输出:

<!--begin.rcode Q1,echo=FALSE,fig.show="all",fig.align="center",warning=FALSE 
end.rcode--> 

块来了,它基本上是一个 2x2 布局的 ggplot2 图形。

library(ggplot2)
myplot = list()
   for (i in 1:4){
          x = 1:100
          y = sample(100,100)
          data = data.frame(x=x,y=y)
          myplot[[i]] = ggplot(data,aes(x=x,y=y))+geom_point()+labs(title="bla")}

do.call(grid.arrange,c(myplot,list(nrow=2,ncol =2)))

现在,在查看生成的 html 文件时,我想加入以下功能: 单击每个图的标题时,我希望有一个链接(例如到数据库)。 这有可能吗?

谢谢

【问题讨论】:

  • 请注意,这并不是一个真正的 knitr 问题 - 必须在 PDF(或您使用的任何图像格式)中添加超链接,这必须由 ggplot2(和我还没有发现任何说这个功能存在的东西)。
  • 您是否考虑过在 HTML 中制作一个 2x2 表格,并在每个单元格中放置一个图形,而不是使用 grid.arrange?
  • 这有什么不同吗?我仍然会遇到为该图分配链接的问题..,不是吗?
  • 如果你这样做了,你可以用原始 HTML 编写链接,而不是需要在图中。如果问题在于链接依赖于 R 中的信息,您可以在编写链接时使用 \Sexpr 从 R 中获取所需的任何变量。 (值得注意的是,如果您的图形的尺寸是通过编程方式确定的——也就是说,如果它有时是 2x3 或有时是 3x4,这将不起作用)
  • 我明白你的意思...我会考虑的。可能是一种开始方式(但图形的尺寸确实是通过程序确定的......)

标签: html r ggplot2 knitr


【解决方案1】:

这并不能完全回答您的问题,但它可能会让您或其他人开始获得完整的答案。

Paul Murrel 的gridSVG package(另见this useful pdf doc)允许向基于grid 的SVG 图形添加超链接。 (理论上它应该与 ggplot2 一起工作;实际上我刚刚让它与 lattice 一起工作)。 current issue of the R Journal 包括几篇文章("What's in a name?""Debugging grid graphics." -- 警告:pdfs),它们可能会帮助您最好地设计动态搜索,以查找要添加链接的 grob 名称(如我的第二行代码)。

library(gridSVG)
library(lattice)

xyplot(mpg~wt, data=mtcars, main = "Link to R-project home")
mainGrobName <- grep("main", grid.ls()[[1]], value=TRUE)
grid.hyperlink(mainGrobName, "http://www.r-project.org")
gridToSVG("HyperlinkExample.svg")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多