[R-es] Etiquetas interactivas ggplot2 + gridSVG

Oscar Perpiñán Lamigueiro oscar.perpinan en gmail.com
Vie Mar 22 23:31:41 CET 2013


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



Más información sobre la lista de distribución R-help-es