new versions of grid and lattice

Paul Murrell p.murrell at auckland.ac.nz
Fri Sep 21 05:05:14 CEST 2001


Hi

There are new versions of the grid and lattice packages on CRAN:
    grid 0.2 and lattice 0.3-0

These packages are still _under development_ (they are in
CRAN/src/contrib/Devel)

There have been some bug fixes and, especially in lattice, there are lots of
new features.
Descriptions of the changes are included below.

If you have any grid code, it may break under the new version because of a
change to the interface of the pop.viewport() function -- see the changes
below.

Many thanks to those who have provided feedback and suggestions for
corrections/improvements.
Don't worry if you can't see your suggestion in the new version;  it just
means we haven't found time to try to implement it yet :)

Paul Murrell
Deepayan Sarkar


---snip---

Changes from grid_0.1 to grid_0.2:

1. Fixed bug in rotating viewports;  this should be more reliable now (the
rotation of
    viewports, not the bug!).

2. Added grid.line.to() and grid.move.to().  These allow drawing BETWEEN
   different coordinate systems.  See example in inst/doc/demo3.ps.

3. Added some more demonstrations to the doc directory.

4. Added more test code to the tests directory.

5. Added "grobwidth" and "grobheight" units.  See the document
   grid/inst/doc/advanced/parentchild.ps

6. Added more detailed documentation to grid/inst/doc/advanced.  This
   stuff is not necessarily very friendly for the reader, but may be useful
if you're
   tearing your hair out wondering why some strange effect is occurring.

7. Changed frames and packing to use the new "grobwidth" and "grobheight"
   units.  This fixes some problems with frames and packing.

8. Fixed a bug where the gpar settings for "fontsize" and "lineheight"
   _within a grob_ would not affect the location or size of the grob
   if they were specified in "lines" or "char" units.

   This required adding new "mylines" and "mychar" units (alternative
   suggestions for names welcome !) so that you can specify whether
   a grob's a location/size is in terms of the current viewport's
   fontsize and lineheight ("lines" and "char") or in terms of its own
   fontsize and lineheight ("mylines" and "mychar").

9. Added grid.polygon() and grid.circle() primitives

10. Added newpage=TRUE argument to grid.start() so that you can restart
    grid graphics mode without having to move to a new page.

    For example, try ...

     postscript()
     grid.start()
     grid.polygon()
     grid.stop()
     grid.start() # moves to new page
     grid.circle()
     grid.stop()
     grid.start(newpage=FALSE) # does NOT move to new page
     grid.rect()
     grid.stop()
     dev.off()

11. Changed interface for pop.viewport().  This now just takes a
    number of viewports to pop, which defaults to 1.
    For example ...

        push.viewport(viewport())
        pop.viewport(current.viewport())

    ... becomes ...

        push.viewport(viewport())
        pop.viewport()

    ... and ...

        vp1 <- viewport()
        vp2 <- viewport()
        push.viewport(vp1, vp2)
        pop.viewport(vp2, vp1)

    ... becomes ...

        vp1 <- viewport()
        vp2 <- viewport()
        push.viewport(vp1, vp2)
        pop.viewport(2)

12. Speed-up of pushing and popping viewports.  This will probably not
    be noticeable in normal usage, but makes a big difference for
    frames and packing.

13. Added a convertNative() function for converting a unit object
    to "user" or "data" coordinates.  This is useful for performing
    calculations (e.g., smoothing) on a location or dimension which
    is easiest to specify in units.

    You must specify whether you wish to convert relative to the
    current x- or y-scale AND whether you are converting a location
    or a dimension.  The following example shows the difference:

       > push.viewport(viewport(w=unit(4,"inches"), xscale=c(-10,10)))
       > convertNative(unit(1:4, "inches"))
       [1] -5  0  5 10
       > convertNative(unit(1:4, "inches"), "y")
       [1] 0.1430986 0.2861972 0.4292958 0.5723944  # on my default window
size
       > convertNative(unit(1:4, "inches"), "y", "dimension")
       [1] 0.1430986 0.2861972 0.4292958 0.5723944
       > convertNative(unit(1:4, "inches"), "x", "dimension")
       [1]  5 10 15 20

    WARNING:  if you draw objects based on output from these conversion
    functions, then resize your device, the objects will be drawn
    incorrectly -- the base R display list will not recalculate these
    conversions.  This means that you can only rely on the results of
    these calculations if the size of your device is fixed.

    This change motivated by discussions with Frank Harrell.


---snip---

Changes in lattice 0.3
======================

The overall internal structure of the lattice library has changed
considerably in verion 0.3, in particular making it far more readable
and debuggable. However, this also means that some code which had
worked with the earlier version might now fail. (This is just a
discalimer, there are no known instances.)

New Features:
============

 o (Almost) full support for the `key' argument for drawing legends

 o Support for log scales

 o levelplot (but no contourplot. In particular, the contour = T option
   in levelplot does not work)

 o tmd now works on the output from qq

 o panel function names can now be quoted strings

 o scales and its x and y components can now be just a character
   string like "free" or "sliced", i.e., the relation tag can be
   omitted.

 o extension to the `type' argument in panel.xyplot and
   panel.superpose to allow stair-like and histogram-like plots
   (type="s" and "h" in plot), as well as loess smooths (using
   the loess.smooth function in the modreg library). Also, more
   than one of these options can now be used concurrently. This
   allows, for example, a grouped plot where a grouping variable
   can be used to fit separate loess curves along with the scatter
   for each group. See example(xyplot)

 o wrappers around grid functions with API-s of traditional graphics
   functions to help port existing S-Plus Trellis code. See below for
   details.

 o changes in print.trellis to allow mixing of Lattice and usual R
   graphics. See below for details.

 o `data' can now be second unnamed argument in
   high level functions

 o `pscales' implemented for splom


Porting S-Plus Trellis code to Lattice
======================================

One of the basic problems in porting existing Trellis code to R is the
unusability of the base R functions like lines and points inside panel
functions. To help make the changes more transparently, lattice now
includes several wrappers around grid functions that provide an API
similar to the corresponding base R functions. The list currently
includes lpoints, llines, ltext and lsegments.


Using Lattice and base R graphics concurrently
==============================================

Grid graphics normally do not mix with usual R graphics. However,
end-users typically might want to use lattice functions concurrently
with traditional R graphics. To allow this without intermittent calls
to grid.stop() and grid.start(), print.trellis (which ultimately does
all the plotting in lattice) now tries to preserve the state of the
device on which it plots. By default, library(lattice) opens a device
in grid enabled mode. It can be reverted to non grid mode by
grid.stop(). Subsequently, both Lattice functions and traditional
graphics functions can be used. Devices opened by trellis.device()
start in non-grid mode, unless grid.start() is called.



Still Missing
=============

 o contourplot, wireframe, cloud (partially implemented) and of course,
   piechart

 o Some components of scale (I haven't found a full list, so
   can't say exactly which are missing)

 o Fonts

 o axis labels badly implemented, no checking for overlaps.



-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-announce mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-announce-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._




More information about the R-announce mailing list