Rev 5415 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
Changes in lattice 0.17=======================new features------------o New function simpleTheme() for creating nested lists withoutspecifying the nesting structure (which is guessed)o Support for lattice.option(print.function) which is the functionactually used when print.trellis() is calledo New argument 'box.width' wherever 'box.ratio' is available (e.g.,panel.bwplot, panel.barchart, etc.), to specify absolute thickness(of boxes, bars, etc.)o New panel.refline() function, same as panel.abline(), but withdefault parameters from the "reference.line" settings.o parallel() has a new 'horizontal.axis' argument; when FALSE, theaxes are vertical and are stacked side by side.o densityplot() now supports weights.o dotplot.table() etc. allow change of orientation (horizontal=FALSE).o New function panel.identify.cloud() to interactively labelthree-dimensional scatterplots.o Added support for notches in panel.bwplot (based on patch from MikeKay)o New panel function panel.smoothScatter (relocated from Bioconductorpackage geneplotter)o Added German translations (contributed by Chris Leick)o reordered documentation to make PDF manual more readablebug fixes---------o Make translations available (they were never actually installed before)Changes in lattice 0.16=======================changes in behaviour--------------------o 'x' in dotplot(~x, data) etc now gets names(x) set torownames(data). Update: this feature has now been removed, as theresulting behaviour is undesirable for bwplot()o the 'call' component of a "trellis" object is set to a better valuethan before (at least for the methods in lattice). One consequenceis that update.default() now works for cases in whichupdate.trellis() doesn't (i.e. those where data packets need tochange)o barchart.table now has an 'horizontal' argumento levelplot.matrix() now allows specification of column labels orpositions through arguments 'row.values' and 'column.values'o width calculation for rectangles changed for levelplot() when 'x','y' are factors; they are set to 1, rather than trying toaccomodate unequally spaced 'x' and 'y' values. This is importantwhen there are empty levelso dimnames() of a "trellis" object is now settable (this allowschanging names and levels of conditioning variables)o labels ('xlab', 'main', etc) can now be character vectors. Intheir list form, they support more graphical parameters as well asfiner positioning (justification, rotation, etc.)o 'strip.left' gets called with 'horizontal = FALSE', so'strip.left = strip.default' now works as expectedChanges in lattice 0.15=======================(Some of these are also available in updated 0.14 versions)new features------------o Default panel functions are now settable optionso Limits of a parallel coordinates plot can now be controlled viafunctionso New 'panel.aspect' argument for cloud and wireframeo Better support for factors in cloud and wireframeo More flexible placement of legends with x, y and corner. Inparticular, corner can have fractional values, and (x, y) can referto a position w.r.t. two potential bounding boxes depending onlattice.getOption("legend.bbox") ('full', meaning full plot region,or 'panel', meaning the subregion containing panels and strips.The default is 'panel', which is a change in behaiour)o trellis.focus() now allows choosing panels interactively.o New interaction functions panel.identify.qqmath() andpanel.brush.splom()o There is now an error handling mechanism for panel functions. Bydefault, errors in panel functions no longer stop execution. See?print.trellis for details.changes in behaviour--------------------o non-numeric data no longer cause warnings in bwploto the default padding between components has been changed to0.5 "chars"Changes in lattice 0.14=======================new features------------o support for custom function that determines packet-panelcorrespondence. This could be used to fill panels verticallyrather than horizontally, or to split layout over two or morepages, etc. (see ?packet.panel.default)o support for customizable functions for axis drawing and tick/labeldeterminationo various accessor functions available to panel, strip, axis (etc)functions, e.g. panel.number() and packet.number()o arguments to lattice.options and print.trellis arguments can now beattached to trellis objects (as parameter settings already could)through high level arguments 'lattice.options' and 'plot.args'o llines, lpoints and ltext are now generic functionso The high level 'key' argument can now have an argument called'reverse.rows' to reverse the order of rows. This applies to'draw.key', 'auto.key' and 'simpleKey' as well.o extended interpretation of 'breaks' in histogram()o matrix methods for 'splom' and 'parallel' (whose absence was anoversight)o support of 'alpha' argument in labels and legends, which werepreviously missing for no good reasono panel.grid() now allows 'h' and 'v' to have negative values otherthan -1, in which case '-h' and '-v' will be used as the 'n'argument to pretty() when determining line locationschanges in behaviour--------------------o panel function is no longer given arguments panel.number andpacket.number (see above for alternatives)o panel.identify() now has a more useful return value (selectedsubscripts)o trellis.panelArgs() without any arguments should return meaningfulresults while a "trellis" object is being printed, and thus shouldbe usable inside panel or axis functions.o For formulae of the form y1 + y2 ~ x1 + x2 + x3, the order oflevels of the artificially created grouping variable is now more'intuitive'Changes in lattice 0.13=======================new features------------o high level generics like 'xyplot' now have both 'x' and 'data' asarguments. The only implication for S3 methods is that they willhave to include the 'data' argument even if they are unused (asthey should be when 'x' is not a formula). The reason for doingthis is to encourage S4 methods using multiple dispatch where 'x'is a formula and 'data' is some other data source.o R messages are now translatable.o French translations courtesy of Philippe Grosjean.o instead of ignoring it as before, 'panel.xyplot' and'panel.densityplot' now deal with a 'groups' argument appropriatelyby calling 'panel.superpose'. Consequently, the default of 'panel'in 'xyplot' etc does not need to be conditional on 'groups'.o added 'lineheight' as a graphical parameter where appropriate.o added a 'grid.pars' setting for arbitrary grid parameters to beset initially via gpar().o For a shingle 'x', 'as.character(levels(x))' creates meaningfullabels.o Shingle levels can now be printed by strip.default.o The strip function, like the panel function, is now passedarguments 'packet.number' and 'panel.number' (although the defaultstrip function makes no use of it).o 'panel.superpose' has new argument to make it bahave like in S-PLUS(interpretation of 'type'). This makes 'panel.superpose.2'unnecessary, although it's still available.o Added wrappers lrect, lpolygon (and panel.rect, panel.polygon)changes in behaviour--------------------o evaluation scope: standard functions with a formula based interface('lm' etc) look for variables in the formula (that are not found in'data') in the environment of the formula. This was doneinconsistently for lattice functions, which has been fixed.o 'summary.trellis' is now more informativeo calls with explicit 'formula=' no longer work (used to give awarning before)o The 'bar.fill' and 'superpose.fill' settings have been replacedwith 'plot.polygon' and 'superpose.polygon' respectively, which aremore consistent with other names.o Default of 'data' changed from 'parent.frame()' to NULL. This hasto do with reasonable non-standard evaluation rules, and probablyneeds some more thought.o Default Trellis settings (a.k.a. theme) changed. See?trellis.device for detailsbug fixes---------o NA-handlingo ltext now supports more 'adj' valueso scales$y$alternating now counts row numbers from top if as.table = TRUEo miscellaneous improvements in strip.defaultTodo (planned)--------------o change panel.qq so that most work gets done thereChanges in lattice 0.12=======================improvements------------o panel.bwplot has a new 'stats' argument, which is a function used tocalculate the statistics in the box and whisker plot. Defaultsto boxplot.stats, which was the hard-coded value earlier.o panel.bwplot has been re-implemented. Faster, avoids direct gridcallso panel.densityplot now allows more flexible specifications of'plot.points', specifically, points can be jittered (the newdefault) or indicated by a `rug'.o (more) changes in NA-handling.o panel.superpose handles type='g' itself so that the grid doesn'tget repeated for every group.new features------------o All high level functions are now generic. This change should bemostly transparent, but there may be some unforeseen side-effects.S3 generics and methods are used (this may change at some point,but not in the near future). In particular, usage where the firstargument is not actually a formula has now been formalized and ishandled via method dispatch rather than the clumsy hacks in placeearlier.o The first argument of high level lattice functions has been renamedfrom 'formula' to 'x'. This is related to the fact that thesefunctions are now generic, and is intended to avoid long-termconfusion. The first argument is usually not named, so this shouldnot cause many problems. If the name 'formula' is explicitlysupplied, it will be used with a warning (as long as there is noargument named 'x') for now, but not in future versions of lattice.o aspect='xy' is now allowed when relation='free'o A new function make.groups (present in S-PLUS) has been added.o there's now panel.rect and lrect (similar to the base functionrect)o print.trellis has a 'draw.in' argument that can be used to specifya grid viewport to draw the plot in.o strips can now be drawn on the left (as well as top) of a panel.This is useful for short wide panels, e.g. time series.o 'Date' objects are recognized and axis labels formatted accordingly(not heavily tested)changes in behaviour---------------------o qqmath has been considerably revamped, primarily to allow groupeddisplays (the older implementation would not have allowed that evenwith a custom panel function). In particular, the (pre)panelfunction(s) now get the raw data as opposed to already computedquantiles. Some old code may stop working.o as a consequence of the above, panel.qqmath, panel.qqmathline etchave been rewritten and have different argument listso tmd has been rewritten (mostly to deal with qqmath objects), butthis shouldn't be user-visible.o densityplot defaults to showing points with random jitter.o arguments panel.number and panel.counter, passed to panel functionsthat have those (or the ...) argument(s) have been renamed to'packet.number' and 'panel.number', which are more in line withstandard Trellis jargon.bug fixes---------o identification of when 'type' should default to "density" was buggy(inapprpriate rounding)Changes in lattice 0.11=======================improvements------------o panel.superpose.2 (which replicates behaviour of panel.superpose inS-PLUS) revamped, with new features to boot.o panel.identify improvedo larrows improved, slightly different features.o [xyz]lab in cloud / wireframe can now be grobs, and honors a 'rot'component for rotation (e.g., zlab = list(rot = 90))new features------------o some finer controls added to parallel (actually panel.parallel)o trellis.last.object(...) now behaves likeupdate(trellis.last.object(), ...))o "trellis" objects now have a plot method that's essentially analias to the print methodo new function 'current.panel.limits' to retrieve native scales ofcurrent panel (only in later versions)changes in behaviour---------------------o behaviour of auto.key = TRUE now function specifico auto.key list now allows a 'text' componento defaults of several standard arguments now taken fromlattice.options()o type='g' now calls panel.grid(h = -1, v = -1) rather thanjustpanel.grid()o NA-handling (may have undesirable effects)bug fixes---------o several minor fixesChanges in lattice 0.10=======================improvements------------o relation="free" and "sliced" now work for factors (at least, aswell as can be expected)o the code that constructs the layout of a lattice plot (in the printmethod for trellis objects) has been completely rewritten. This ismostly transparent to the user, but as a side effect, it is nowpossible to control the details of the layout (things like theamount of padding around the plot, the gap between tick marks andlabels) via the trellis settings "layout.heights" and"layout.widths".o col.regions and colorkey in levelplot and wireframe now honoursettings in effect when the object is printed, and not when theobject was created.o xlab, ylab, main and sub can now be grobso datasets get separate documentation, contributed by Kevin Wrightnew features------------o lattice.options(), similar to options(), to control various aspectsof lattice plots. This is mostly for easier code maintainance, butcan be useful for the user too.o API now supports alpha-transparency (actual support is devicedependent) where appropriate (some cases might have been missed,and reports of omissions would be appreciated).o API for interacting with and enhancing Trellis plots AFTER they aredrawn, based on grid functions seekViewport, grid.locator, etc.See ?trellis.focuso aspect="iso" for `isometric' x- and y-axes.o new 'default.scales' argument to high level functions, useful whenwriting wrapperso convenience function 'strip.custom' to create strip functions fromstrip.default just by overriding one or more argumentso type="H" in lplot.xy (for horizontal line). New argument'horizontal' for panel.xyplot, which affects what happens forvarious 'type'-s.o type="g" in panel.xyplot, which draws a reference grido the print method now (optionally) saves the (last) object printedin a non-visible environment. This allows retrieval of the lastprinted object for 'update'-ing, and more importantly, to retrievepanel specific data for use while interacting with and enhancingplots after they are printedo a summary method for trellis objects (currently pretty basic)changes in behaviour---------------------o lset has been deprecated, and trellis.par.set has been enhancedwith equivalent usageo the strip function now gets the whole strip area to work with, andis responsible for using it appropriately. strip.default has beenupdated accordinglyo choice of color for grouped barcharts now taken from a new settingparameter 'superpose.fill' and not 'regions' as previouslyo arguments to panel.levelplot has changed (this is related to howdefault colors are obtained, as described above).bug fixes---------o axes now drawn on last panel even if it doesn't fall on the borderof the layouto many other miscellaneous fixes, see SvnLog for some detailsChanges in lattice 0.9======================improvements------------o Axis labelling code has been rewritten to internally use S3 methoddispatch, with (unexported) methods for numeric (default),character (for factors), POSIXct and date. More methods can beconsidered on request. reversed limits are now allowed.o contourplot can now handle missing rows in the data frame(equivalent to NA's in z). contourplot now uses contourLines().o cloud and wireframe now use better 3-D projection calculations, andare generally much better than before. wireframe is much faster,and has a better shading algorithm. It can also handle NA's andmissing rows.o splom (specifically panel.pairs) has more functionality, includingthe option of using different panel functions below and above thediagonal, user defined diagonal panels, and a table-like layout(similar to pairs)o font specifications now allow for fontface and fontfamilyo much improved update method for trellis objectso setting auto.key = TRUE now computes key at printing time,honouring any changes in trellis settingsnew features------------o arbitrary reordering of conditioning variables, as well as oflevels within a conditioning variable. This works in the updatemethod (as well as high-level plots), making it easy to examineparts of a multipanel trellis display and view it in differentconditioning orders.o extended key functionality (via the legend argument) that allowsmultiple legends and the use of arbitrary grid objects as keyso option to NOT drop unused factor levels when subsetting, by settingdrop.unused.levels = FALSE ordrop.unused.levels = list(cond = FALSE, data = FALSE)in high-level functions like xyplot.o Ability to attach settings to a trellis object (rather thanchanging the global settings), via argument par.settings in highlevel calls.o Wireframe can now draw parametrized 3-D surfaces like spheres(generally of the form f(u,v) = (x(u,v), y(u,v), z(u,v)), for(u,v) in the square [0,1] x [0,1]).o Functionality similar to locator() (possible due to recently addedfeatures of grid). All panels should have predictable viewportnames, which can be used in seekViewport() to grab a particularviewport. grid.locator() can subsequently be used to locate pointsin the native coordinate system of that panel.changes in behaviour---------------------o allow.multiple now defaults to TRUE (whenever it makes sense),since '+' in a formula is interpreted differently than S-PLUSanyway. As in model formulae, I(x+y) works as expected.o default behaviour of qq and qqmath changed (from S-PLUS behaviour)to match corresponding base functions qqplot and qqnormbug fixes---------o Fixed important bug concerning interaction of subscripts andsubsetso lots of other fixes, mostly obscureChanges in lattice 0.8======================o Major change is the addition of a NAMESPACE. grid is now not'require()-d', but imported only. To use grid functions directly inlattice calls (which is a very reasonable thing to do), one needsto explicitly call library(grid).o contourplot() has improved when data has NA's. Still doesn't workwhen the NA rows are completely omitted (in other words, the full"matrix" has to be specified, even the entries with NA).o Clipping can now be turned off in panels and strips via thetrellis.par.get("clip") setting.See the Changelog for other minor changes.Changes in lattice 0.7======================grouping variables------------------o The handling of Grouped displays has been made more consistent (anddifferent from S-Plus). Whenever a groups= argument is specified,it is assumed that the user wants a grouped display and an attemptis made to honour this whenever appropriate (this ultimatelydepends on the panel function). A non-trivial addition to the listof functions that support this is barchart.o Specification of legend (key) has been made slightly easier in themost common cases. The key is used most often in conjunction withthe groups argument, and using the global trellis settings. ThesimpleKey function (and the auto.key argument to high levelfunctions) uses the global settings to create a key with a not veryflexible but simple interface.o Handling of the formula argument has been extended to allowmultiple variables on either side of the formula (withallow.multiple = TRUE), e.g. xyplot(y1 + y2 ~ x, data, allow.m =TRUE). These are treated as grouped displays.scales------o Some components of scales, namely tck, rot and cex, can now belength 2 vectors, controlling left/bottom and right/top separately.o Some more functions (not all) now handle factors in the formulacorrectly (i.e., coerce them to numeric when factors are notappropriate, but use levels of the factor for labelling).Changes in lattice 0.6======================API change:----------o panel functions: In earlier versions, panel functions and prepanelfunctions were guaranteed to be passed numeric vectors as x,y (andz) arguments. This is no longer true. All panel functions are nowexpected to handle other possibilities. This has been done in allthe predefined panel functions in lattice (but not in llines,lpoints, etc.). In practice, the only changes required are (unlessI have overlooked something) to add calls likex <- as.numeric(x)y <- as.numeric(y)at the beginning. prepanel functions can now return, as their xlimor ylim components, either a numeric vector of length 2 (possibly aDateTime object), or a character vector. The latter implies thatthe elements of this vector should be the respective axis labels,associated with tick marks at 1:length_of_this_vector.o high-level functions: The default panel functions of high levelfunctions can now be different, depending on whether a groupsargument was passed. In practice, this now happens for xyplot,splom and densityplot. (densityplot has an additional high-levelargument specifically for this, called panel.groups, which ispassed to the panel function.) This is a convenience feature, (andis inconsistent with S-Plus) in that it presumes that if the userhas specified a groups argument, she wants it to be used, whereappropriate.o scales: In anticipation of future use (in nlme, for example), theat and labels components of scales can now be a list. Each elementcorresponds to a panel. This is thoroughly untested and notguaranteed to work.There are also some other API changes associated with cloud andwireframe, discussed below.New Features and Fixes:----------------------o Mathematical Annotation; Following changes in grid 0.7, lattice nowsupports latex-style labelling using expressions. These can be usedin almost all sensible places (an exception being in colorkey axislabels in levelplot/contourplot, and this is not expected tochange).o Date-Time Labelling: Axis labelling procedures did not recognizeDateTime objects in earlier versions. This has been fixed. Theroutine currently used is a hack of axis.POSIXt (without the formatoption), but will hopefully improve in future.o 3-D functions:The 3-D functions cloud and wireframe have been greatly improved interms of extensibility. The code is much cleaner, and writing newpanel functions are much simpler. Earlier versions had a problemwith the default placement of the labels (x/y/z-lab) and scales(arrows/ticks), which has been fixed. [The only major problem thatstill remains is when, in a perspective plot, the projection of thedistant face is fully contained inside the projection of the nearface.]Earlier wireframe code used an unnecessarily large amount ofmemory. This has been fixed, although speed is still not good(fixes are in the planing stage, and would involve changes ingrid). drape=TRUE used to give wrong coloring, which is now fixed.The 'group' argument now works with wireframe, resulting inmultiple surfaces. This is mostly satisfactory, but is notsophisticated enough to render intersecting surfaces properly(might be approximated by a fine enough grid).There are also some rudimentary lighting options, which can renderthe surface as being illuminated from a light source. Noshadows. (Try shade=TRUE in wireframe.)Although these changes go a long way towards stabilizingcloud/wireframe, some further changes, especially in how the panelfunction handles the groups argument, are expected in the future.Known bugs:==========o Handling of NA values are often inconsistent and buggy. Some ofthese are not easily fixable (particularly one in contourplot), butsome are, so bug reports on this are still welcome.o Fonts specified in the new R font specification may not work yet.Changes in lattice 0.5======================Not many.o Biggest change in the way settings are handled. Settings are nowstored in a global list called lattice.theme, and is trulydevice-specific (i.e., settings for more than one device can beused concurrently). Improved theme management via lset andshow.settings. Changed defaults for color postscript/pdf.o bwplot and friends which had to have the grouping factor/shingle onthe y-axis, can now have it on the x-axis as well. Far fromperfect, though, since long labels can overlap with defaultsettings.o panel.superpose now accepts an additional argument calledpanel.groups (by default panel.xyplot), which is the panel functionactually called for each subset of the data determined bygroups. Avoids having to write something as big as panel.superposefor natural generalizations like interaction plots. (Related newpanel function: panel.linejoin)o colorkey in levelplot on all sides. Rendering of large key's muchmuch faster (using grid.place suggested by Paul)o Other minor changes (doc, more arguments etc)o Following changes in grid, calls to base R graphics and latticefunctions can now be mixed.Changes in lattice 0.4======================Some of the implementation details have changed a lot. This mightcause some old code to fail, though no such instances are known.No significant new features have been added, but there are severalbugfixes (notably in levelplot). The important changes are:o documentation restructured. There is no topic called `trellis.args'any more. The detailed description of the arguments common to allhigh level trellis functions can be found under help(xyplot)o once trellis.device() is called, Lattice graphics and base Rgraphics should mix more or less seamlessly. There is an optionalargument in trellis.device() that can deal with the first blankpage problem, with certain restrictions.o a (as yet very small) demo, called by demo("lattice")o Clipping: whatever is drawn by the panel function is now clipped toinside the panel region. Strip texts are clipped to inside thestrips.o Axis tick labels by default do not overlap, some tick marks areleft unlabelled if necessary.o The argument list for strip.default changed to be like So levels() and nlevels() give sensible answers for shingles. newprint methods for shingles and levels of shingleso colorkey (currently used only in levelplot) can now be placed tothe left, top or bottom as wello new ``lines'' component in the par.strip.text argument that can beused to change the height of stripso xlab, main etc can be double height strings (containing "\n"-s),the spaces allocated for these would be automatically adjustedo strip.default now has style=5o new panel.superpose.2 (suggested by Neil Klepeis)o the default colour settings sometimes seem too light on a whitebackground. To deal with this, there is a new setting with somedarker colours that can be set by calling lset(theme ="white.bg"). see ?lset for details. This is currently in aproof-of-concept stage (the colors in "white.bg" were chosen justbecause I liked their names), and suggestions for better colorschemes would be most welcome.o show.settings() addedChanges in lattice 0.3======================The overall internal structure of the lattice library has changedconsiderably in verion 0.3, in particular making it far more readableand debuggable. However, this also means that some code which hadworked with the earlier version might now fail. (This is just adiscalimer, there are no known instances.)New Features:============o (Almost) full support for the `key' argument for drawing legendso Support for log scaleso levelplot (but no contourplot. In particular, the contour = T optionin levelplot does not work)o tmd now works on the output from qqo panel function names can now be quoted stringso scales and its x and y components can now be just a characterstring like "free" or "sliced", i.e., the relation tag can beomitted.o extension to the `type' argument in panel.xyplot andpanel.superpose to allow stair-like and histogram-like plots(type="s" and "h" in plot), as well as loess smooths (using theloess.smooth function in the modreg package). Also, more than oneof these options can now be used concurrently. This allows, forexample, a grouped plot where a grouping variable can be used tofit separate loess curves along with the scatter for eachgroup. See example(xyplot)o wrappers around grid functions with API-s of traditional graphicsfunctions to help port existing S-Plus Trellis code. See below fordetails.o changes in print.trellis to allow mixing of Lattice and usual Rgraphics. See below for details.Porting S-Plus Trellis code to Lattice======================================One of the basic problems in porting existing Trellis code to R is theunusability of the base R functions like lines and points inside panelfunctions. To help make the changes more transparently, lattice nowincludes several wrappers around grid functions that provide an APIsimilar to the corresponding base R functions. The list currentlyincludes lpoints, llines, ltext and lsegments [update: larrows].Using Lattice and base R graphics concurrently [OBSOLETE]==============================================Grid graphics normally do not mix with usual R graphics. However,end-users typically might want to use lattice functions concurrentlywith traditional R graphics. To allow this without intermittent callsto grid.stop() and grid.start(), print.trellis (which ultimately doesall the plotting in lattice) now tries to preserve the state of thedevice on which it plots. By default, library(lattice) opens a devicein grid enabled mode. It can be reverted to non grid mode bygrid.stop(). Subsequently, both Lattice functions and traditionalgraphics functions can be used. Devices opened by trellis.device()start in non-grid mode, unless grid.start() is called.Still Missing [OBSOLETE, except for the parts about piechart and scale]=============o contourplot, wireframe, cloud (partially implemented) and of course,piecharto Some components of scale (I haven't found a full list, socan't say exactly which are missing)o Fontso axis labels badly implemented, no checking for overlaps.Local variables:mode: indented-textEnd: