我试图用超链接提供ggplot2图:
这有效:
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")
Run Code Online (Sandbox Code Playgroud)
这不是:
p = ggplot(mtcars, aes(wt, mpg)) + geom_point()+ labs(title="link")
print(p)
mainGrobName <- grep("title", grid.ls()[[1]], value=TRUE)
grid.hyperlink(mainGrobName, "http://www.r-project.org")
gridToSVG("HyperlinkExample.svg")
Run Code Online (Sandbox Code Playgroud)
有什么暗示吗?
我询问了 gridSVG 包的作者之一 Simon Potter:这是他的(工作)答案:
我建议你在这里尝试开发版本:
http://r-forge.r-project.org/R/?group_id=1025
它包含专门处理 gTables(以及 ggplot2 图形)的解决方法。
因此,要尝试让您的示例正常工作,请启动一个新的 R 会话并运行以下代码:
install.packages("gridSVG", repos="http://R-Forge.R-project.org")
library(gridSVG)
library(ggplot2)
(p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + labs(title="link"))
titleGrobName <- grep("title", grid.ls(print=FALSE)$name, value=TRUE)
grid.hyperlink(titleGrobName, "http://www.r-project.org/")
gridToSVG("HyperlinkExample.svg", "none", "none")
Run Code Online (Sandbox Code Playgroud)
这里唯一真正的区别是为 gridToSVG() 提供的附加参数。这主要是为了将输出减少为仅 SVG 文件和 HTML 包装器(否则您还会获得一些 JSON 数据,这对您的示例没有用)。