-----Original Message-----
From: r-sig-finance-bounces at stat.math.ethz.ch
[mailto:r-sig-finance-bounces at stat.math.ethz.ch] On Behalf Of
Romain Francois
Sent: 19 February 2007 14:48
To: Tony Plate
Cc: R-sig-finance
Subject: Re: [R-SIG-Finance] SVG device with tooltips
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:
length( gsub( '.*style="(.*)".*', '\\1', grep( 'style', rl, value =
length(unique( gsub( '.*style="(.*)".*', '\\1', grep( 'style', rl,
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:
I put experimental SVG device package, which includes the ability to
have popup tooltips, at
--
I've just put them here so that people can see the SVG
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
time to look at them or comment on them.)
Limitations/features are:
* standard graphics primitives are used (points(), rect(),
same code should work with any device (for other devices,
that specify tooltips should have no effect.)
* tooltips are attached to shapes: e.g., the output of
and polygon(), but not lines()
* the tooltip is specified in a separate call to the
* only the first shape produced by an R drawing function
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
it's probably not correct. These tooltips display fine in
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
specifying in advance a vector of tooltip text. However, the whole
approach of having to supply the tooltip text in advance is
nice -- though it was the only way I could think of making
graphics primitives work with tooltips (because the
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
anyone is inspired and comes up with something, I'm happy to try to
integrate it!
-- Tony Plate