R Under development (unstable) (2025-07-22 r88445 ucrt) -- "Unsuffered Consequences" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library(grid) > library(gridSVG) Attaching package: 'gridSVG' The following objects are masked from 'package:grid': linearGradient, pattern, radialGradient The following object is masked from 'package:grDevices': dev.off > > # A very simple test > dev.new(width=6, height=6) dev.new(): using pdf(file="Rplots6.pdf") > # Some default settings > pushViewport(viewport(gp=gpar(col="black", fill=NA))) > grid.text("Click me", name="txtgrob") > grid.hyperlink("txtgrob", href="http://cran.stat.auckland.ac.nz") > popViewport() > > grid.export() > dev.off() null device 1 > > # A scatterplot and two dot plots designed to be > # linked together > > # Some data > data(iris) > > # A scatterplot of x vs y > dev.new(width=6, height=6) dev.new(): using pdf(file="Rplots7.pdf") > # Some default settings > pushViewport(viewport(gp=gpar(col="black", fill=NA))) > pushViewport(plotViewport(c(5, 5, 4, 2))) > pushViewport(dataViewport(iris$Sepal.Length, iris$Sepal.Width)) > grid.rect() > grid.xaxis(name="xaxis") > grid.yaxis(name="yaxis") > grid.hyperlink("xaxis", "linkdotx.svg") > grid.hyperlink("yaxis", "linkdoty.svg") > grid.points(iris$Sepal.Length[iris$Species == "setosa"], + iris$Sepal.Width[iris$Species == "setosa"], + gp=gpar(col="red")) > grid.points(iris$Sepal.Length[iris$Species == "versicolor"], + iris$Sepal.Width[iris$Species == "versicolor"], + gp=gpar(col="green")) > grid.points(iris$Sepal.Length[iris$Species == "virginica"], + iris$Sepal.Width[iris$Species == "virginica"], + gp=gpar(col="blue")) > grid.text("Sepal Length", y=unit(-3, "lines")) > grid.text("Sepal Width", x=unit(-3, "lines"), rot=90) > popViewport(3) > grid.export("linkscatter.svg") > dev.off() null device 1 > > # A dot plot of x > dev.new(width=6, height=3) dev.new(): using pdf(file="Rplots8.pdf") > # Some default settings > pushViewport(viewport(gp=gpar(col="black", fill=NA))) > pushViewport(plotViewport(c(5, 2, 4, 2))) > pushViewport(dataViewport(iris$Sepal.Length, yscale=c(0 ,1))) > grid.rect(gp=gpar(col="grey")) > grid.xaxis() > grid.points(iris$Sepal.Length[iris$Species == "setosa"], + rnorm(50, .5, .05), + size=unit(2, "char"), + gp=gpar(col=NULL, fill="red", alpha=0.3)) > grid.points(iris$Sepal.Length[iris$Species == "versicolor"], + rnorm(50, .5, .05), + size=unit(2, "char"), + gp=gpar(col=NULL, fill="green", alpha=0.3)) > grid.points(iris$Sepal.Length[iris$Species == "virginica"], + rnorm(50, .5, .05), + size=unit(2, "char"), + gp=gpar(col=NULL, fill="blue", alpha=0.3)) > grid.text("Sepal Length", y=unit(-3, "lines")) > grid.text(name="returnlink", + "Return to Scatterplot", + y=unit(1, "npc") + unit(1, "lines"), + gp=gpar(col="grey")) > grid.hyperlink("returnlink", "linkscatter.svg") > popViewport(3) > grid.export("linkdotx.svg") > dev.off() null device 1 > > # A dot plot of y > dev.new(width=6, height=3) dev.new(): using pdf(file="Rplots9.pdf") > # Some default settings > pushViewport(viewport(gp=gpar(col="black", fill=NA))) > pushViewport(plotViewport(c(5, 2, 4, 2))) > pushViewport(dataViewport(iris$Sepal.Width, yscale=c(0 ,1))) > grid.rect(gp=gpar(col="grey")) > grid.xaxis() > grid.points(iris$Sepal.Width[iris$Species == "setosa"], + rnorm(50, .5, .05), + size=unit(2, "char"), + gp=gpar(col=NULL, fill="red", alpha=0.3)) > grid.points(iris$Sepal.Width[iris$Species == "versicolor"], + rnorm(50, .5, .05), + size=unit(2, "char"), + gp=gpar(col=NULL, fill="green", alpha=0.3)) > grid.points(iris$Sepal.Width[iris$Species == "virginica"], + rnorm(50, .5, .05), + size=unit(2, "char"), + gp=gpar(col=NULL, fill="blue", alpha=0.3)) > grid.text("Sepal Width", y=unit(-3, "lines")) > grid.text(name="returnlink", + "Return to Scatterplot", + y=unit(1, "npc") + unit(1, "lines"), + gp=gpar(col="grey")) > grid.hyperlink("returnlink", "linkscatter.svg") > popViewport(3) > grid.export("linkdoty.svg") > dev.off() null device 1 > > > # Check link to overall grob works > > grid.newpage() > grid.draw(hyperlinkGrob(linesGrob(gp=gpar(lwd=20)), + href="http://www.stat.auckland.ac.nz")) > grid.export("testGroupOfOneHyperlink.svg") > > grid.newpage() > grid.draw(hyperlinkGrob(segmentsGrob(1:3/4, gp=gpar(lwd=20)), + href="http://www.stat.auckland.ac.nz")) > grid.export("testGroupOfManyHyperlink.svg") > > # Test *individual* hrefs > > grid.newpage() > grid.draw(hyperlinkGrob(linesGrob(gp=gpar(lwd=20)), + href="http://www.stat.auckland.ac.nz", + group=FALSE)) > grid.export("testIndividualOneHyperlink.svg") > > grid.newpage() > grid.draw(hyperlinkGrob(segmentsGrob(1:3/4, gp=gpar(lwd=20)), + href="http://www.stat.auckland.ac.nz", + group=FALSE)) > grid.export("testIndividualManyHyperlink.svg") > > grid.newpage() > grid.draw(hyperlinkGrob(segmentsGrob(1:3/4, gp=gpar(lwd=20)), + href=c("http://www.stat.auckland.ac.nz", + "http://slashdot.org", + "http://soccernet.com"), + group=FALSE)) > grid.export("testIndividualManyHyperlinks.svg") > > proc.time() user system elapsed 1.20 0.17 1.35