Buenas tardes, Estoy intereaso en añadir a un gráfico que ya tengo hecho con gglplot2 y que voy a publicar en una web un poco de interacción. Simplemente que al pasar el ratón por los puntos del gráfico se muestre la información del punto. Por lo que he podido investigar la manera es convertir el gráfico en un svg y con ayuda de javascript añadir esta función, aquí hay un ejemplo que no soy capaz de producir, consigo el svg pero no tiene nada de acción: http://stackoverflow.com/questions/11134379/interactive-point-labels-with-gridsvg-and-ggplot2-v-0-9-0 Por lo que he podido investigar buscando por internet hay problemas con versiones de ggplot y demás. También he intentado un paquete llamado SVGAnottaion pero tampoco he conseguido nada, aquí una web con ejemplos: http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/SVGAnnotationPaper.html Aquí lo que me gustaría conseguir (con un gráfico de ggplot2) sacado de esta web: http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/XMLExamples/quakes_tips.svg Por lo que creo me vendría mejor usar el primero de los paquetes gridSVG que parece funcionar mejor con ggplot y además tener más futuro. ¿Alguien tiene conocimientos de esto? Muchas gracias de antemano y buen fin de semana. -- Jorge Ayuso Rejas [[alternative HTML version deleted]]
Jorge, Mi experiencia no coincide con tu objetivo pero por lo que sirva te la cuento. Normalmente uso ggplot2 para gráficos planos inanimados. Si recuerdo bien ggplot2 te permite guardar el gráfico como svg, si tienes experiencia en javascript y html podrías trabajar sobre el archivo svg producido por ggplo2 y ver que pasa con la animación del etiquetado. No lo he hecho y tampoco lo he intentado. Cuando necesité lo que buscas use el paquete SVGAnnotation. A mi me funciona el siguiente script (ver el sessionInfo al final y lo veo en Chrome, puede ser que en IE tengas problemas con versiones no actualizadas): library("XML") library("SVGAnnotation") # Create the basic plot doc = svgPlot(plot(mpg ~ wt, mtcars, main = "Motor Trend Car Road Tests", pch=19, col= "#377EB8")) # Annotate title and axes ax = getAxesLabelNodes(doc) # Add link from title to motor trend website addLink(ax$title, "http://www.motortrend.com", addArea = TRUE) # Add tooltips to the x, y axes tips = c("Weight in units of lb/1000", "Miles per US gallon") addToolTips(ax[c("xaxis", "yaxis")], tips) addToolTips(doc, apply(mtcars, 1, function(x) paste(names(mtcars), x, sep = " = ", collapse = ", "))) saveXML(doc, "../mt_tips.svg") depth.col = gray.colors(100)[cut(quakes$depth, 100, label=FALSE)] depth.ord = rev(order(quakes$depth)) doc = svgPlot( plot(lat ~ long, data = quakes[depth.ord, ], pch = 19, col = depth.col[depth.ord], xlab = "Longitude", ylab="Latitude", main = "Fiji Region Earthquakes") ) ax = getAxesLabelNodes(doc) addToolTips(ax[c("xaxis", "yaxis")], c("Degrees east of the prime meridean", "Degrees south of the equator"), addArea = TRUE) usgs = "http://earthquake.usgs.gov/eqcenter/recenteqsww/" region = "Maps/region/S_Pacific.php" addAxesLinks(ax$title, paste(usgs, region, sep = "")) addToolTips(doc, apply(quakes[depth.ord, ], 1, function(x) paste(names(quakes), x, sep = " = ", collapse = ", "))) # This is a relative path to the CSS file. # The default path will be absolute. #addCSS(doc, css = "../../inst/CSS/RSVGPlot.css") saveXML(doc, "quakes_tips.svg") > sessionInfo() R version 2.15.2 (2012-10-26) Platform: i386-w64-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 LC_MONETARY=Spanish_Argentina.1252 LC_NUMERIC=C [5] LC_TIME=Spanish_Argentina.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] SVGAnnotation_0.93-1 Cairo_1.5-2 XML_3.96-0.2 Claro que lo anterior implica hacer nuevamente en gráfico. Si vas a tomarte ese trabajo investiga las opciones de googleVis ya que de todas formas lo vas a publicar en la Web. A mi me han funcionado muy bien: https://developers.google.com/chart/interactive/docs/gallery/scatterchart http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf (páginas 29 y 30 para la alternativa shiny) Suerte, y espero interesado en ver si alguien tiene solucionado el asunto usando gggplot2 y obteniendo un svg con etiquetas dinámicas. Daniel Merino El día 22 de marzo de 2013 16:09, Jorge Ayuso Rejas <jayusor en gmail.com> escribió:> > Buenas tardes, > > Estoy intereaso en añadir a un gráfico que ya tengo hecho con gglplot2 > y que voy a publicar en una web un poco de interacción. > Simplemente que al pasar el ratón por los puntos del gráfico se muestre > la información del punto. > > Por lo que he podido investigar la manera es convertir el gráfico en un > svg y con ayuda de javascript añadir esta función, aquí hay un ejemplo > que no soy capaz de producir, consigo el svg pero no tiene nada de acción: > > http://stackoverflow.com/questions/11134379/interactive-point-labels-with-gridsvg-and-ggplot2-v-0-9-0 > > Por lo que he podido investigar buscando por internet hay problemas con > versiones de ggplot y demás. > > También he intentado un paquete llamado SVGAnottaion pero tampoco he > conseguido nada, aquí una web con ejemplos: > http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/SVGAnnotationPaper.html > > Aquí lo que me gustaría conseguir (con un gráfico de ggplot2) sacado de > esta web: > http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/XMLExamples/quakes_tips.svg > > > Por lo que creo me vendría mejor usar el primero de los paquetes gridSVG > que parece funcionar mejor con ggplot y además tener más futuro. > > ¿Alguien tiene conocimientos de esto? Muchas gracias de antemano y buen > fin de semana. > > > -- > Jorge Ayuso Rejas > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Daniel
Oscar Perpiñán Lamigueiro
2013-Mar-22 22:31 UTC
[R-es] Etiquetas interactivas ggplot2 + gridSVG
Hola, Yo he utilizado gridSVG con gráficos generados por lattice para obtener animación y para añadir "tooltips". Copio a continuación algunos enlaces con código y algo de explicación: - http://oscarperpinan.github.com/spacetime-vis/images/navarraRadiation.svg (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/timeHorizontalAxis.R) - http://oscarperpinan.github.com/spacetime-vis/images/bubbles.svg (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/timeComplementary.R) - http://oscarperpinan.github.com/spacetime-vis/airMadrid.html (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/thematicMaps.R) - http://procomun.wordpress.com/2013/01/04/tooltips-with-r/ (en breve lo modificaré para usar qTip2 en lugar de tooltipster) - http://procomun.wordpress.com/2011/11/12/animation-with-gridsvg/ - http://procomun.wordpress.com/2012/02/23/maps_with_r_3/ Por otra parte, en la web de Murrel hay varios ejemplos, algunos con ggplot2: http://www.stat.auckland.ac.nz/~paul/R/gridSVG/ Saludos. Oscar. daniel <daniel319 en gmail.com> writes:> Jorge, > > Mi experiencia no coincide con tu objetivo pero por lo que sirva te la cuento. > > Normalmente uso ggplot2 para gráficos planos inanimados. Si recuerdo > bien ggplot2 te permite guardar el gráfico como svg, si tienes > experiencia en javascript y html podrías trabajar sobre el archivo svg > producido por ggplo2 y ver que pasa con la animación del etiquetado. > No lo he hecho y tampoco lo he intentado. > > Cuando necesité lo que buscas use el paquete SVGAnnotation. A mi me > funciona el siguiente script (ver el sessionInfo al final y lo veo en > Chrome, puede ser que en IE tengas problemas con versiones no > actualizadas): > > library("XML") > library("SVGAnnotation") > > # Create the basic plot > doc = svgPlot(plot(mpg ~ wt, mtcars, > main = "Motor Trend Car Road Tests", pch=19, > col= "#377EB8")) > > # Annotate title and axes > ax = getAxesLabelNodes(doc) > > # Add link from title to motor trend website > addLink(ax$title, "http://www.motortrend.com", addArea = TRUE) > > # Add tooltips to the x, y axes > tips = c("Weight in units of lb/1000", "Miles per US gallon") > addToolTips(ax[c("xaxis", "yaxis")], tips) > > addToolTips(doc, apply(mtcars, 1, function(x) > paste(names(mtcars), x, sep = " = ", > collapse = ", "))) > > > saveXML(doc, "../mt_tips.svg") > > > depth.col = gray.colors(100)[cut(quakes$depth, 100, label=FALSE)] > depth.ord = rev(order(quakes$depth)) > doc = svgPlot( > plot(lat ~ long, data = quakes[depth.ord, ], > pch = 19, col = depth.col[depth.ord], > xlab = "Longitude", ylab="Latitude", > main = "Fiji Region Earthquakes") ) > > > ax = getAxesLabelNodes(doc) > > > addToolTips(ax[c("xaxis", "yaxis")], c("Degrees east of the prime meridean", > "Degrees south of the equator"), addArea = TRUE) > > > usgs = "http://earthquake.usgs.gov/eqcenter/recenteqsww/" > region = "Maps/region/S_Pacific.php" > addAxesLinks(ax$title, paste(usgs, region, sep = "")) > > > addToolTips(doc, > apply(quakes[depth.ord, ], 1, > function(x) > paste(names(quakes), x, > sep = " = ", collapse = ", "))) > > > # This is a relative path to the CSS file. > # The default path will be absolute. > #addCSS(doc, css = "../../inst/CSS/RSVGPlot.css") > > > saveXML(doc, "quakes_tips.svg") > > > sessionInfo() > R version 2.15.2 (2012-10-26) > Platform: i386-w64-mingw32/i386 (32-bit) > > locale: > [1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 > LC_MONETARY=Spanish_Argentina.1252 LC_NUMERIC=C > [5] LC_TIME=Spanish_Argentina.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] SVGAnnotation_0.93-1 Cairo_1.5-2 XML_3.96-0.2 > > > Claro que lo anterior implica hacer nuevamente en gráfico. Si vas a > tomarte ese trabajo investiga las opciones de googleVis ya que de > todas formas lo vas a publicar en la Web. A mi me han funcionado muy > bien: > > https://developers.google.com/chart/interactive/docs/gallery/scatterchart > > http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf > (páginas 29 y 30 para la alternativa shiny) > > Suerte, y espero interesado en ver si alguien tiene solucionado el > asunto usando gggplot2 y obteniendo un svg con etiquetas dinámicas. > > Daniel Merino > > > El día 22 de marzo de 2013 16:09, Jorge Ayuso Rejas > <jayusor en gmail.com> escribió: >> >> Buenas tardes, >> >> Estoy intereaso en añadir a un gráfico que ya tengo hecho con gglplot2 >> y que voy a publicar en una web un poco de interacción. >> Simplemente que al pasar el ratón por los puntos del gráfico se muestre >> la información del punto. >> >> Por lo que he podido investigar la manera es convertir el gráfico en un >> svg y con ayuda de javascript añadir esta función, aquí hay un ejemplo >> que no soy capaz de producir, consigo el svg pero no tiene nada de acción: >> >> http://stackoverflow.com/questions/11134379/interactive-point-labels-with-gridsvg-and-ggplot2-v-0-9-0 >> >> Por lo que he podido investigar buscando por internet hay problemas con >> versiones de ggplot y demás. >> >> También he intentado un paquete llamado SVGAnottaion pero tampoco he >> conseguido nada, aquí una web con ejemplos: >> http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/SVGAnnotationPaper.html >> >> Aquí lo que me gustaría conseguir (con un gráfico de ggplot2) sacado de >> esta web: >> http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/XMLExamples/quakes_tips.svg >> >> >> Por lo que creo me vendría mejor usar el primero de los paquetes gridSVG >> que parece funcionar mejor con ggplot y además tener más futuro. >> >> ¿Alguien tiene conocimientos de esto? Muchas gracias de antemano y buen >> fin de semana. >> >> >> -- >> Jorge Ayuso Rejas >> >> >> [[alternative HTML version deleted]] >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >>-- Oscar Perpiñán Lamigueiro Grupo de Sistemas Fotovoltaicos (IES-UPM) Dpto. Ingeniería Eléctrica (EUITI-UPM) URL: http://procomun.wordpress.com Twitter: @oscarperpinan
Jorge mas abajo encontraras mi comentario actualizado con lo enviado por Oscar, pero primero quiero agradecer a Oscar por los vinculos enviados, espero hacer buen uso de ellos en el futuro. Pero sigo teniendo problemas para la integración de ggplot2 y gridSVG. Hace tiempo (varios meses no me acuerdo donde) lei que Murrell pensaba sacar una actualizacion de gridSVG para abril del 2013 y que esa version trabajaba con la que sera la proxima version de R (no la recientemente publicada 2.15.3 sino la que se espera para abril), por lo que supongo mis problemas surgen de no utilizar la version correcta de gridSVG, en mi caso puedo esperar a la alineacion planetaria de las nuevas versiones. Posiblemente estoy en lo incorrecto y espero, me interesa, que me corrijan. Mientras tanto del excelente material que nos envia Oscar, veo un grafico en lattice que probalemente le sirva a Jorge: http://www.stat.auckland.ac.nz/~paul/Talks/Genentech2011/huber.svg.html El codigo de R es: http://www.stat.auckland.ac.nz/~paul/Talks/Genentech2011/huber.R Ojo que hay que tener el siguiente script en el mismo directorio de huber.R con el nombre de archivo huber,js highlight = function(i) { var point = document.getElementById("point." + i); var label = document.getElementById("label." + i); point.setAttribute("r", point.getAttribute("r")*2); label.setAttribute("visibility", "visible"); } dim = function(i) { var point = document.getElementById("point." + i); var label = document.getElementById("label." + i); point.setAttribute("r", point.getAttribute("r")/2); label.setAttribute("visibility", "hidden"); } Lo encontre en: http://www.stat.auckland.ac.nz/~paul/Talks/Genentech2011/huber.js Ojo hay que agregar la libreria grid. La siguiente es la descripcion de mi sesion en R> sessionInfo()R version 2.15.3 (2013-03-01) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=C LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] grid stats graphics grDevices utils datasets methods base other attached packages: [1] gridSVG_0.9-1 lattice_0.20-13 loaded via a namespace (and not attached): [1] tools_2.15.3 Seguramente hay otros ejemplos que se podrian adapatar y usar, pero este me parecio el mas directo. Daniel Merino El día 22 de marzo de 2013 19:31, Oscar Perpiñán Lamigueiro <oscar.perpinan en gmail.com> escribió:> Hola, > > Yo he utilizado gridSVG con gráficos generados por lattice para obtener > animación y para añadir "tooltips". Copio a continuación algunos enlaces > con código y algo de explicación: > > - http://oscarperpinan.github.com/spacetime-vis/images/navarraRadiation.svg > (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/timeHorizontalAxis.R) > - http://oscarperpinan.github.com/spacetime-vis/images/bubbles.svg > (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/timeComplementary.R) > - http://oscarperpinan.github.com/spacetime-vis/airMadrid.html (código > en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/thematicMaps.R) > - http://procomun.wordpress.com/2013/01/04/tooltips-with-r/ (en breve lo > modificaré para usar qTip2 en lugar de tooltipster) > - http://procomun.wordpress.com/2011/11/12/animation-with-gridsvg/ > - http://procomun.wordpress.com/2012/02/23/maps_with_r_3/ > > Por otra parte, en la web de Murrel hay varios ejemplos, algunos con > ggplot2: > > http://www.stat.auckland.ac.nz/~paul/R/gridSVG/ > > Saludos. > > Oscar. > > daniel <daniel319 en gmail.com> writes: > >> Jorge, >> >> Mi experiencia no coincide con tu objetivo pero por lo que sirva te la cuento. >> >> Normalmente uso ggplot2 para gráficos planos inanimados. Si recuerdo >> bien ggplot2 te permite guardar el gráfico como svg, si tienes >> experiencia en javascript y html podrías trabajar sobre el archivo svg >> producido por ggplo2 y ver que pasa con la animación del etiquetado. >> No lo he hecho y tampoco lo he intentado. >> >> Cuando necesité lo que buscas use el paquete SVGAnnotation. A mi me >> funciona el siguiente script (ver el sessionInfo al final y lo veo en >> Chrome, puede ser que en IE tengas problemas con versiones no >> actualizadas): >> >> library("XML") >> library("SVGAnnotation") >> >> # Create the basic plot >> doc = svgPlot(plot(mpg ~ wt, mtcars, >> main = "Motor Trend Car Road Tests", pch=19, >> col= "#377EB8")) >> >> # Annotate title and axes >> ax = getAxesLabelNodes(doc) >> >> # Add link from title to motor trend website >> addLink(ax$title, "http://www.motortrend.com", addArea = TRUE) >> >> # Add tooltips to the x, y axes >> tips = c("Weight in units of lb/1000", "Miles per US gallon") >> addToolTips(ax[c("xaxis", "yaxis")], tips) >> >> addToolTips(doc, apply(mtcars, 1, function(x) >> paste(names(mtcars), x, sep = " = ", >> collapse = ", "))) >> >> >> saveXML(doc, "../mt_tips.svg") >> >> >> depth.col = gray.colors(100)[cut(quakes$depth, 100, label=FALSE)] >> depth.ord = rev(order(quakes$depth)) >> doc = svgPlot( >> plot(lat ~ long, data = quakes[depth.ord, ], >> pch = 19, col = depth.col[depth.ord], >> xlab = "Longitude", ylab="Latitude", >> main = "Fiji Region Earthquakes") ) >> >> >> ax = getAxesLabelNodes(doc) >> >> >> addToolTips(ax[c("xaxis", "yaxis")], c("Degrees east of the prime meridean", >> "Degrees south of the equator"), addArea = TRUE) >> >> >> usgs = "http://earthquake.usgs.gov/eqcenter/recenteqsww/" >> region = "Maps/region/S_Pacific.php" >> addAxesLinks(ax$title, paste(usgs, region, sep = "")) >> >> >> addToolTips(doc, >> apply(quakes[depth.ord, ], 1, >> function(x) >> paste(names(quakes), x, >> sep = " = ", collapse = ", "))) >> >> >> # This is a relative path to the CSS file. >> # The default path will be absolute. >> #addCSS(doc, css = "../../inst/CSS/RSVGPlot.css") >> >> >> saveXML(doc, "quakes_tips.svg") >> >> > sessionInfo() >> R version 2.15.2 (2012-10-26) >> Platform: i386-w64-mingw32/i386 (32-bit) >> >> locale: >> [1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 >> LC_MONETARY=Spanish_Argentina.1252 LC_NUMERIC=C >> [5] LC_TIME=Spanish_Argentina.1252 >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] SVGAnnotation_0.93-1 Cairo_1.5-2 XML_3.96-0.2 >> >> >> Claro que lo anterior implica hacer nuevamente en gráfico. Si vas a >> tomarte ese trabajo investiga las opciones de googleVis ya que de >> todas formas lo vas a publicar en la Web. A mi me han funcionado muy >> bien: >> >> https://developers.google.com/chart/interactive/docs/gallery/scatterchart >> >> http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf >> (páginas 29 y 30 para la alternativa shiny) >> >> Suerte, y espero interesado en ver si alguien tiene solucionado el >> asunto usando gggplot2 y obteniendo un svg con etiquetas dinámicas. >> >> Daniel Merino >> >> >> El día 22 de marzo de 2013 16:09, Jorge Ayuso Rejas >> <jayusor en gmail.com> escribió: >>> >>> Buenas tardes, >>> >>> Estoy intereaso en añadir a un gráfico que ya tengo hecho con gglplot2 >>> y que voy a publicar en una web un poco de interacción. >>> Simplemente que al pasar el ratón por los puntos del gráfico se muestre >>> la información del punto. >>> >>> Por lo que he podido investigar la manera es convertir el gráfico en un >>> svg y con ayuda de javascript añadir esta función, aquí hay un ejemplo >>> que no soy capaz de producir, consigo el svg pero no tiene nada de acción: >>> >>> http://stackoverflow.com/questions/11134379/interactive-point-labels-with-gridsvg-and-ggplot2-v-0-9-0 >>> >>> Por lo que he podido investigar buscando por internet hay problemas con >>> versiones de ggplot y demás. >>> >>> También he intentado un paquete llamado SVGAnottaion pero tampoco he >>> conseguido nada, aquí una web con ejemplos: >>> http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/SVGAnnotationPaper.html >>> >>> Aquí lo que me gustaría conseguir (con un gráfico de ggplot2) sacado de >>> esta web: >>> http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/XMLExamples/quakes_tips.svg >>> >>> >>> Por lo que creo me vendría mejor usar el primero de los paquetes gridSVG >>> que parece funcionar mejor con ggplot y además tener más futuro. >>> >>> ¿Alguien tiene conocimientos de esto? Muchas gracias de antemano y buen >>> fin de semana. >>> >>> >>> -- >>> Jorge Ayuso Rejas >>> >>> >>> [[alternative HTML version deleted]] >>> >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> > > > -- > Oscar Perpiñán Lamigueiro > Grupo de Sistemas Fotovoltaicos (IES-UPM) > Dpto. Ingeniería Eléctrica (EUITI-UPM) > URL: http://procomun.wordpress.com > Twitter: @oscarperpinan-- Daniel
Hola, gracias a los dos. Al final lo he conseguido, aunque todavía me queda alguna cosa. Los ejemplos de Oscar me funcionan bien pero con ggplot no me funciona gridToSVG (se queda todo acumulado en la esquina superior izquierda). He actualizado la versión del gridSVG a la dev (1.0) y ahora me funciona. El problema es que la generación del SVG por lo que he visto cambia algunas cosas y los ejemplos de Oscar no me funcionan bien del todo. En chrome no funcionan y en firefox si ... Estuve también hacinendo pruebas con unos ejemplos que encontré creo que en el github de Oscar sobre qTip (estos me gustan más porque puedes jugar con el css y darle el toque que necesites) pero tenía el mismo problema no me acabada ir bien. Luego he estado mirándome este pdf : http://www.stat.auckland.ac.nz/~paul/gridSVG/gridsvg.pdf <http://www.stat.auckland.ac.nz/%7Epaul/gridSVG/gridsvg.pdf> de las referencias que puso Oscar. Aquí están los ejemplos dinámicos de ese pdf: http://www.stat.auckland.ac.nz/~paul/gridSVG/ <http://www.stat.auckland.ac.nz/%7Epaul/gridSVG/> y en concreto lo que yo quería: http://www.stat.auckland.ac.nz/~paul/gridSVG/qplotbrowser.svg <http://www.stat.auckland.ac.nz/%7Epaul/gridSVG/qplotbrowser.svg> Retocando un poco este código con ayuda del otro ejemplo de Oscar conseguí lo que quería aunque ahora quiero retocar el aspecto visual (puede que use qTip o este http://twitter.github.com/bootstrap/javascript.html#tooltips ) En definitiva, gracias a los dos, copio y pego mi código por si sirve de algo para alguien: library("ggplot2") library("gridSVG") x <- rnorm(10) y <- rnorm(10) id <- seq_along(x) df <- data.frame(x, y, id) ggplot(dat=df,aes(x=x,y=y))+geom_point(size=5) grid.ls() grobs <- grid.ls() names <- grobs$name[grobs$type == "grobListing"] i<-names[grep("points",names)] grid.garnish(i, onmouseover=paste("showTooltip(evt, ''", df$id, "'')"), onmouseout=rep("hideTooltip()",nrow(df)), grep=TRUE, group=FALSE) grid.script(filename="tooltip.js") gridToSVG("qplotbrowser.svg") browseURL("qplotbrowser.svg.html") Necesario tener el tooltip.js en la misma carpeta, lo conseguí aquí: http://www.stat.auckland.ac.nz/~paul/gridSVG/tooltip.js <http://www.stat.auckland.ac.nz/%7Epaul/gridSVG/tooltip.js> Saludos y gracias! PD, mis versiones de paquetes: ther attached packages: [1] gridSVG_1.0-0 XML_3.96-0.2 RJSONIO_1.0-2 ggplot2_0.9.3.1.99 El 23/03/13 17:12, daniel escribió:> Jorge mas abajo encontraras mi comentario actualizado con lo enviado > por Oscar, pero primero quiero agradecer a Oscar por los vinculos > enviados, espero hacer buen uso de ellos en el futuro. Pero sigo > teniendo problemas para la integración de ggplot2 y gridSVG. Hace > tiempo (varios meses no me acuerdo donde) lei que Murrell pensaba > sacar una actualizacion de gridSVG para abril del 2013 y que esa > version trabajaba con la que sera la proxima version de R (no la > recientemente publicada 2.15.3 sino la que se espera para abril), por > lo que supongo mis problemas surgen de no utilizar la version correcta > de gridSVG, en mi caso puedo esperar a la alineacion planetaria de las > nuevas versiones. Posiblemente estoy en lo incorrecto y espero, me > interesa, que me corrijan. Mientras tanto del excelente material que > nos envia Oscar, veo un grafico en lattice que probalemente le sirva a > Jorge: > > http://www.stat.auckland.ac.nz/~paul/Talks/Genentech2011/huber.svg.html > > El codigo de R es: > > http://www.stat.auckland.ac.nz/~paul/Talks/Genentech2011/huber.R > > Ojo que hay que tener el siguiente script en el mismo directorio de > huber.R con el nombre de archivo huber,js > > > highlight = function(i) { > var point = document.getElementById("point." + i); > var label = document.getElementById("label." + i); > point.setAttribute("r", point.getAttribute("r")*2); > label.setAttribute("visibility", "visible"); > } > > dim = function(i) { > var point = document.getElementById("point." + i); > var label = document.getElementById("label." + i); > point.setAttribute("r", point.getAttribute("r")/2); > label.setAttribute("visibility", "hidden"); > } > > Lo encontre en: > > http://www.stat.auckland.ac.nz/~paul/Talks/Genentech2011/huber.js > > Ojo hay que agregar la libreria grid. La siguiente es la descripcion > de mi sesion en R > >> sessionInfo() > R version 2.15.3 (2013-03-01) > Platform: x86_64-pc-linux-gnu (64-bit) > > locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=C LC_NAME=C > LC_ADDRESS=C LC_TELEPHONE=C > LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > > attached base packages: > [1] grid stats graphics grDevices utils datasets > methods base > > other attached packages: > [1] gridSVG_0.9-1 lattice_0.20-13 > > loaded via a namespace (and not attached): > [1] tools_2.15.3 > > Seguramente hay otros ejemplos que se podrian adapatar y usar, pero > este me parecio el mas directo. > > > Daniel Merino > > > El día 22 de marzo de 2013 19:31, Oscar Perpiñán Lamigueiro > <oscar.perpinan@gmail.com> escribió: >> Hola, >> >> Yo he utilizado gridSVG con gráficos generados por lattice para obtener >> animación y para añadir "tooltips". Copio a continuación algunos enlaces >> con código y algo de explicación: >> >> - http://oscarperpinan.github.com/spacetime-vis/images/navarraRadiation.svg >> (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/timeHorizontalAxis.R) >> - http://oscarperpinan.github.com/spacetime-vis/images/bubbles.svg >> (código en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/timeComplementary.R) >> - http://oscarperpinan.github.com/spacetime-vis/airMadrid.html (código >> en https://github.com/oscarperpinan/spacetime-vis/tree/master/code/thematicMaps.R) >> - http://procomun.wordpress.com/2013/01/04/tooltips-with-r/ (en breve lo >> modificaré para usar qTip2 en lugar de tooltipster) >> - http://procomun.wordpress.com/2011/11/12/animation-with-gridsvg/ >> - http://procomun.wordpress.com/2012/02/23/maps_with_r_3/ >> >> Por otra parte, en la web de Murrel hay varios ejemplos, algunos con >> ggplot2: >> >> http://www.stat.auckland.ac.nz/~paul/R/gridSVG/ >> >> Saludos. >> >> Oscar. >> >> daniel <daniel319@gmail.com> writes: >> >>> Jorge, >>> >>> Mi experiencia no coincide con tu objetivo pero por lo que sirva te la cuento. >>> >>> Normalmente uso ggplot2 para gráficos planos inanimados. Si recuerdo >>> bien ggplot2 te permite guardar el gráfico como svg, si tienes >>> experiencia en javascript y html podrías trabajar sobre el archivo svg >>> producido por ggplo2 y ver que pasa con la animación del etiquetado. >>> No lo he hecho y tampoco lo he intentado. >>> >>> Cuando necesité lo que buscas use el paquete SVGAnnotation. A mi me >>> funciona el siguiente script (ver el sessionInfo al final y lo veo en >>> Chrome, puede ser que en IE tengas problemas con versiones no >>> actualizadas): >>> >>> library("XML") >>> library("SVGAnnotation") >>> >>> # Create the basic plot >>> doc = svgPlot(plot(mpg ~ wt, mtcars, >>> main = "Motor Trend Car Road Tests", pch=19, >>> col= "#377EB8")) >>> >>> # Annotate title and axes >>> ax = getAxesLabelNodes(doc) >>> >>> # Add link from title to motor trend website >>> addLink(ax$title, "http://www.motortrend.com", addArea = TRUE) >>> >>> # Add tooltips to the x, y axes >>> tips = c("Weight in units of lb/1000", "Miles per US gallon") >>> addToolTips(ax[c("xaxis", "yaxis")], tips) >>> >>> addToolTips(doc, apply(mtcars, 1, function(x) >>> paste(names(mtcars), x, sep = " = ", >>> collapse = ", "))) >>> >>> >>> saveXML(doc, "../mt_tips.svg") >>> >>> >>> depth.col = gray.colors(100)[cut(quakes$depth, 100, label=FALSE)] >>> depth.ord = rev(order(quakes$depth)) >>> doc = svgPlot( >>> plot(lat ~ long, data = quakes[depth.ord, ], >>> pch = 19, col = depth.col[depth.ord], >>> xlab = "Longitude", ylab="Latitude", >>> main = "Fiji Region Earthquakes") ) >>> >>> >>> ax = getAxesLabelNodes(doc) >>> >>> >>> addToolTips(ax[c("xaxis", "yaxis")], c("Degrees east of the prime meridean", >>> "Degrees south of the equator"), addArea = TRUE) >>> >>> >>> usgs = "http://earthquake.usgs.gov/eqcenter/recenteqsww/" >>> region = "Maps/region/S_Pacific.php" >>> addAxesLinks(ax$title, paste(usgs, region, sep = "")) >>> >>> >>> addToolTips(doc, >>> apply(quakes[depth.ord, ], 1, >>> function(x) >>> paste(names(quakes), x, >>> sep = " = ", collapse = ", "))) >>> >>> >>> # This is a relative path to the CSS file. >>> # The default path will be absolute. >>> #addCSS(doc, css = "../../inst/CSS/RSVGPlot.css") >>> >>> >>> saveXML(doc, "quakes_tips.svg") >>> >>> > sessionInfo() >>> R version 2.15.2 (2012-10-26) >>> Platform: i386-w64-mingw32/i386 (32-bit) >>> >>> locale: >>> [1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 >>> LC_MONETARY=Spanish_Argentina.1252 LC_NUMERIC=C >>> [5] LC_TIME=Spanish_Argentina.1252 >>> >>> attached base packages: >>> [1] stats graphics grDevices utils datasets methods base >>> >>> other attached packages: >>> [1] SVGAnnotation_0.93-1 Cairo_1.5-2 XML_3.96-0.2 >>> >>> >>> Claro que lo anterior implica hacer nuevamente en gráfico. Si vas a >>> tomarte ese trabajo investiga las opciones de googleVis ya que de >>> todas formas lo vas a publicar en la Web. A mi me han funcionado muy >>> bien: >>> >>> https://developers.google.com/chart/interactive/docs/gallery/scatterchart >>> >>> http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf >>> (páginas 29 y 30 para la alternativa shiny) >>> >>> Suerte, y espero interesado en ver si alguien tiene solucionado el >>> asunto usando gggplot2 y obteniendo un svg con etiquetas dinámicas. >>> >>> Daniel Merino >>> >>> >>> El día 22 de marzo de 2013 16:09, Jorge Ayuso Rejas >>> <jayusor@gmail.com> escribió: >>>> Buenas tardes, >>>> >>>> Estoy intereaso en añadir a un gráfico que ya tengo hecho con gglplot2 >>>> y que voy a publicar en una web un poco de interacción. >>>> Simplemente que al pasar el ratón por los puntos del gráfico se muestre >>>> la información del punto. >>>> >>>> Por lo que he podido investigar la manera es convertir el gráfico en un >>>> svg y con ayuda de javascript añadir esta función, aquí hay un ejemplo >>>> que no soy capaz de producir, consigo el svg pero no tiene nada de acción: >>>> >>>> http://stackoverflow.com/questions/11134379/interactive-point-labels-with-gridsvg-and-ggplot2-v-0-9-0 >>>> >>>> Por lo que he podido investigar buscando por internet hay problemas con >>>> versiones de ggplot y demás. >>>> >>>> También he intentado un paquete llamado SVGAnottaion pero tampoco he >>>> conseguido nada, aquí una web con ejemplos: >>>> http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/SVGAnnotationPaper.html >>>> >>>> Aquí lo que me gustaría conseguir (con un gráfico de ggplot2) sacado de >>>> esta web: >>>> http://www.omegahat.org/SVGAnnotation/SVGAnnotationPaper/XMLExamples/quakes_tips.svg >>>> >>>> >>>> Por lo que creo me vendría mejor usar el primero de los paquetes gridSVG >>>> que parece funcionar mejor con ggplot y además tener más futuro. >>>> >>>> ¿Alguien tiene conocimientos de esto? Muchas gracias de antemano y buen >>>> fin de semana. >>>> >>>> >>>> -- >>>> Jorge Ayuso Rejas >>>> >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es@r-project.org >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>> >> >> -- >> Oscar Perpiñán Lamigueiro >> Grupo de Sistemas Fotovoltaicos (IES-UPM) >> Dpto. Ingeniería Eléctrica (EUITI-UPM) >> URL: http://procomun.wordpress.com >> Twitter: @oscarperpinan > >-- Jorge Ayuso Rejas [[alternative HTML version deleted]]