Skip to content

SVG device with tooltips

4 messages · Gabor Grothendieck, Tony Plate, Romain Francois

#
I put experimental SVG device package, which includes the ability to 
have popup tooltips, at

http://www.cybermesa.com/~champagne/RSVGwTips/RSVGwTipsDevice_0.6.1.tar.gz 
(source)
http://www.cybermesa.com/~champagne/RSVGwTips/RSVGwTipsDevice_0.6.1.zip 
(windows binary package)

Examples of the plots produced are at:

http://www.cybermesa.com/~champagne/RSVGwTips/svgplot1.svg
http://www.cybermesa.com/~champagne/RSVGwTips/svgplot2.svg
http://www.cybermesa.com/~champagne/RSVGwTips/svgplot3.svg

(These are the first 3 examples produced by the code in the help file -- 
I've just put them here so that people can see the SVG output without 
having to get, compile and install the package.)

This SVG device is called RSVGwTipsDevice, and is based on the 
RSvgDevice package written by T Jake Luciani <jakeluciani at yahoo.com> 
(who did express mild interest in these modifications, but didn't have 
time to look at them or comment on them.)

Limitations/features are:

* standard graphics primitives are used (points(), rect(), etc), and the 
  same code should work with any device (for other devices, the calls 
that specify tooltips should have no effect.)
* tooltips are attached to shapes: e.g., the output of points(), rect(), 
and polygon(), but not lines()
* the tooltip is specified in a separate call to the drawing function
* only the first shape produced by an R drawing function will have a 
tooltip (so, if you want each point to have a tooltip, each must be 
drawn separately)
* the tooltips that have a title + 2 lines of text probably use 
non-standard SVG code -- I wrote the SVG code by trial and error and 
it's probably not correct.  These tooltips display fine in Firefox, but 
the Batik standalone SVG viewer doesn't like them.

One possible approach to get around the limitation that vectorized calls 
to points() (etc) only have a tooltip on the first point is to allow 
specifying in advance a vector of tooltip text.  However, the whole 
approach of having to supply the tooltip text in advance is not very 
nice -- though it was the only way I could think of making the standard 
graphics primitives work with tooltips (because the standard graphics 
primitives don't allow optional extra arguments).

If you try this out, please bear in mind that this really is 
experimental code.  Comments/suggestions/contributions are welcome 
(especially from SVG experts!)

It's probably reasonably easy to add other dynamic graphics features 
such as zooming and x/y location readout.  I just haven't tried, but if 
anyone is inspired and comes up with something, I'm happy to try to 
integrate it!

-- Tony Plate
#
When I click on the three svg files in IE7 on Windows XP I get the xml
source code, not a graphic.  If go to Adobe's site I do get SVG graphics
for their examples.  I have Adobe's SVG addin installed.
On 2/15/07, Tony Plate <tplate at acm.org> wrote:
#
Thanks for the feedback!  The SVG code appears to not work with IE on 
Windows.  I've had several reports (including from Gabor) that it does 
work with Firefox, on both GNU/Linux and Windows.  If anyone knows 
what's wrong and how to fix it so that it works with IE, I'd be happy to 
incorporate a fix (but it's not something I'm going to spend much time 
on myself).  AFAICS, it's not just a matter of including a DTD -- I 
tried that and it still wouldn't display in IE.

-- Tony
Gabor Grothendieck wrote:
2 days later
#
Hi,

Thank you for that nice package. As part of my job here, we integrate
SVG with packages such as R and it's an area of great interest to me due
to the graphical capabilities it allows. I managed to use your work to
produce a graphic from a package I'm writing about profiling R code. It
is much nicer with the SVG interactivity than with any other format. The
example shows a profiling graphic of one line of code, I'll send a Mango
t-shirt to the first one that tells me what line of code I profiled ...

http://www.mango-solutions.com/examples/profileplot.svg

The idea of the graphic is that the area of a rectangle represents the
number of times a given function was called.

A couple of thoughts :
- the package inherits the style="all kinds of stuff" from RSvgDevice
when a use of css would help. n my example I get the following results:
TRUE)) )
[1] 173
value = TRUE))) )
[1] 44
 and if I look deeper into the code, only the fill: field differ from
the many style I have

I think it could be good to use some CSS in the package. A way to do it
could be to post process the file after it is created, that can be fun
!, or generate the css as graphical objects are added to the svg file.

- The javascript scripts are embed to the document, it could be useful
to be able to link the javascript, could be an option ?

- I believe css could be used instead of javascript for the tooltips, I
specially think of the pseudo class "hover", something on the lines of :

rect.*{
  display:none;
}
rect:hover.*{
  display:inline;
}

the downside is that using hover won't bring IE any closer to be able to
render the file properly.

- What about links, so if I click on the glm rect on my example, it will
bring the help page of glm, ...

- I've tested it with konqueror, it does not seem to work

Anyway, nice package, ...

Romain
Tony Plate wrote: