[R-es] Etiquetas interactivas ggplot2 + gridSVG
daniel
daniel319 en gmail.com
Vie Mar 22 22:40:46 CET 2013
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
Más información sobre la lista de distribución R-help-es