Permalink
ggplot2/NEWS
Newer
100644
2055 lines (1301 sloc)
73.4 KB
1
ggplot2 1.0.1
2
----------------------------------------------------------------
3
6
* Improvements to order of colours and legend display for continuous colour
7
scales extracted from colorbrewer palettes by `scale_*_distiller()` (@jiho, 1076)
10
----------------------------------------------------------------
14
* New coordinate system for small scale maps. `coord_quickmap()` computes and
15
sets the correct aspect ratio between one degree of latitude and one degree
16
of longitude at the centre of the plotted region. It does not perform full
17
fledged mapping projection as `coord_map()` does and therefore is much
18
faster. Yet, it gives a correct approximation for small scale maps (a few
19
degrees in either direction) at medium to low latitudes (@jiho, #922).
20
21
* `geom_boxplot` gain new `varwidth` argument for controlling whether or not
22
the width of boxplots should be proportional to the size of the groups
25
* `position_jitterdodge()` combines `position_jitter()` and `position_dodge()`,
26
allowing the user to plot and align points generated by e.g. `geom_point()`
27
with those generated by a dodged `geom_boxplot()`. See
28
`example(position_jitterdodge)` for a potential usage. (@kevinushey, #932)
29
30
* Allow specifying only one of the limits in a scale and use the automatic
31
calculation of the other limit by passing NA to to the limit function,
32
`xlim()` or `ylim()` (@jimhester, #557).
34
* Allow to use brewer palettes for continuous scales, through the new
35
`scale_fill/colour_distiller()` functions (@jiho, #925).
37
* `stat_ellipse()` adds data ellipses. It supports bivariate normal and t distributions,
38
as well as a euclidian distance circle. (@jofrhwld, #926)
40
* Add new themes: `theme_linedraw()` is similar to `theme_bw()` but with
41
truly only white and black elements and spacing between elements identical
42
to `theme_gray`. `theme_light` is similar but with light gray box and axes
43
around the plot, to emphasise content more (@jiho, #923)
45
* new theme settings panel.margin.x and panel.margin.y (units) allow
46
specifying horizontal and vertical gap between panels in facetted plots (for
47
both grid and wrap). (Kirill Müller. Fixes #839)
49
* Fix vertical justification for rotated text. This will change the appearance
50
of plots that use textual elements that are rotated by 90° or 270° and have a
51
`vjust` parameter other than the default 0.5; the interpretation of `vjust`
52
and `hjust` is now the same for both rotated and non-rotated text elements
53
(0 = top/left, 1 = bottom/right, 0.5 = centered). (@krlmlr, #883)
55
* Added helper function `labeller()` for formatting faceting values.
56
(@stefanedwards, #910). Added `label_wrap_gen` based on
57
https://github.com/hadley/ggplot2/wiki/labeller#writing-new-labellers
58
(@stefanedwards, #910)
59
60
BUG FIXES AND MINOR IMPROVEMENTS
61
62
* `aes()` no more treats variables like `a..x..b` as a calculated aesthetic.
63
(@krlmlr, #834.)
65
* New `aes_q()` function to generate aesthetic specifications from
66
quoted calls/names. `aes_string()` uses names `x` and `y` for first
67
two unnamed arguments.
68
69
* `fortify.SpatialPolygonsDataFrame()` now calls `polygons` without
70
requiring the `sp` to be loaded first (@seancarmody, #879).
71
72
* The outliers of `geom_boxplot()` use the default colour, size and shape from
73
`geom_point()`. Changing the defaults of `geom_point()` with
74
`update_geom_defaults()` will apply the same changes to the outliers of
75
`geom_boxplot()`. Changing the defaults for the outliers was previously not
76
possible. (@ThierryO, #757)
77
78
* `geom_dotplot()` now works with `qplot()`. (@rasmusab. Fixes #825)
79
80
* Marginal improvements to `theme_bw()` and `theme_classic()` (@jiho, #934)
81
82
* `stat_smooth()` checks for `method = "auto"` and `method = "glm"` in
83
a safer way.
84
85
* Add `"none"` to documentation of `theme()` for parameter `legend.position`
86
(@krlmlr, #829).
90
* `ggpcp()`, `ggfluctuation()`, `ggmissing()`, `ggstructure()`, and
91
`ggorder()` are now defunct and have been removed.
94
----------------------------------------------------------------
95
96
BUG FIXES
97
98
* The theme element `legend.box.just` now can be set. It was not properly
99
recognized before.
100
101
* `stat_density2d` previously resulted in errors when geom="polygon". This
102
is fixed. (Fixes #741 and #749)
103
104
* `annotation_logticks` previously drew one set of logticks for each group,
105
and inherited aesthetic mappings like colour. It no longer does this. (Fixes
106
#767)
107
108
* Plots with geom_crossbar not display correct symbol in legend. (Fixes #768)
109
110
* Grouping is no longer set automatically by `stat_summary()`, allowing for
111
summary paths. This reverts a change made for 0.9.3. (Fixes #732 and #739)
112
114
----------------------------------------------------------------
115
116
* The `plotmatrix` function has been deprecated and prints a warning
117
message.
118
119
* `stat_bin` now produces warning messages when it is used with set or
120
mapped y values. Previously, it was possible to use `stat_bin` and
121
also set/map y values; if there was one y value per group, it would
122
display the y values from the data, instead of the counts of cases for
123
each group. This usage is deprecated and will be removed in a future
124
version of ggplot2. (Winston Chang. Fixes #632)
125
126
* Several small changes were made so that ggplot2 is compatible with
127
plyr <= 1.7.1 as well as plyr > 1.7.1.
128
129
* `geom_polygon` draws multiple polygons as a single grob instead of as
130
separate grobs. This results in much better performance. For example,
131
drawing a world map is about 12 times faster. (Winston Chang. Fixes #666)
132
135
* A new theme `theme_minimal` has been added. This theme is based on
136
`theme_bw`, but does not have outlines around many of the rectangular
137
elements. (Baptiste Auguie)
138
139
* A new theme `theme_classic` has been added. This theme has is based on
140
`theme_bw`. It has x and y axis lines, but no box around the plotting area
141
and no grid lines. (Thanks to David Kahle)
142
143
* `geom_segment` allows setting `lineend`. (Jean-Olivier Irisson)
144
145
* `ggsave` raises an error when making images larger than 50x50 inches.
146
This prevents accidentally creating extremely large bitmap images that
147
hang R and eat up memory. (Winston Chang. Fixes #517)
148
149
* `train_cartesian` and `train_trans` are no longer memoized. Previously
150
the results of these functions were saved and so they would not
151
respond changes in the operating environment, such as a change in
152
locale. (Winston Chang. Fixes #592)
153
154
* In `stat_ydensity` and `geom_violin`, the `scale` argument now accepts
155
the value "width", for equal widths. Additionally `scale="equal"` has
160
* `scale_size_area` has been added as a replacement for `scale_area`. This
161
makes the naming more consistent. The new scale also by default makes the
162
area of points proportional to the value, which is different from what
163
`scale_area` does. (Fixes #635)
165
* Functions now have gradual deprecation behavior with the `gg_dep` function.
166
167
* Scales for required but missing aesthetics (x and y) are now automatically
168
added. (Fixes #676)
169
170
* `geom_crossbar` previous raised a warning when notches were used and the
171
notches went outside the hinges. This has been changed to a message.
172
173
BUG FIXES
174
175
* With `geom_segment`, when a variable mapped to `linetype` had an NA
176
value, it would raise an error. This is now fixed. (Winston Chang.
177
Fixes #623)
178
179
* When using `coord_map` with some projections, latitude lines wrapped
180
around the globe and added extra lines. (Winston Chang. Fixes #562)
181
182
* `stat_summary` now calculates a unique value at each x. (Winston
183
Chang. Fixes #622)
185
* Colorbar guides now supports language objects returned from functions
186
like `math_format()`, and will render them as expressions. (Kohske
187
Takahashi)
188
189
* When using `coord_polar`, NA or NaN values caused errors. They are now
190
ignored instead. (Winston Chang)
191
192
* Text theme elements used in `guide_legend`, such as `label.theme`, caused
193
confusing errors when the angle wasn't set. Now it produces a more
194
informative error message.
195
196
* Theme elements now have their subclass listed first, before the `element`
197
class. (Thanks to Jeffrey Arnold)
198
199
* Previously when free scales were used with non-cartesian coords, they just
200
wouldn't work. Now ggplot throws an error with an informative message.
201
(Fixes #673)
202
203
* `geom_dotplot` previously worked with `position="dodge", but did not work
204
when using `position=position_dodge()`. It now works with both. (Fixes
205
#709)
206
207
* For linetype scales, NA values previously caused errors. Now `na.value`
208
for linetype scales defaults to "blank". (Fixes #711)
209
210
ggplot2 0.9.2.1
211
----------------------------------------------------------------
212
213
BUG FIXES
214
215
* find_global now searches for objects in the namespace environment
216
instead of the package environment. This fixes problems when ggplot2
217
is imported to another package but not attached.
218
219
ggplot2 0.9.2
220
----------------------------------------------------------------
221
222
THEME SYSTEM
223
224
* The theme system has been completely rewritten. (Winston Chang)
225
226
* The functions `theme_text`, `theme_line`, and so on have been renamed to
227
`element_text`, `element_line`, and so on.
228
229
* The `opts()` function has been renamed to `theme()`.
230
231
* To set the plot title, use `labs(title = "...")` or `ggtitle("...")
232
instead of `opts(title = "...")`.
233
234
* Elements are now just lists of properties, instead of functions that
235
return grobs.
236
237
* Theme elements now can inherit properties. For example, `axis.title.x`
238
inherits properties from `axis.title`, which in turn inherits from
239
`text`. The inheritance tree is stored in ggplot2::.element_tree.
240
241
* Theme objects can now be added to each other with `+`, without a ggplot
242
object. There is also a new `%replace%` operator for adding theme
243
objects together.
244
245
* Vertical and horizontal grid lines can now be controlled independently,
246
with `axis.grid.major.x`, `axis.grid.major.y` (and the same for minor);
247
`axis.ticks.x` and `axis.ticks.y`; and `axis.line.x` and `axis.line.y`.
248
249
* The `size` property of theme elements can be defined relative to the
250
parent objects, using the `rel()` function.
251
254
* ggplot2 now uses the external gtable package instead of internal gtable
255
functions.
256
257
* The condition that set parameters (e.g. `colour = "red"`) could only be of
258
length one has been relaxed - they may now be of length one, or exactly the
259
same length as the data. Recycling is not done because it makes it harder to
260
spot problems. This makes `annotate` considerably more flexible. (Fixes
261
#489)
262
265
* new stat class `stat_ecdf` that shows empirical cumulative distribution
266
function. (Kohske Takahashi)
268
* Dependency on `gpclib` removed, and `fortify.SpatialPolygonsDataFrame` will
269
now use `rgeos` if available - this is particularly useful if you're not
270
able to use the non-free `gpclib`.
271
274
* all "template" plots (`plotmatrix`, `ggorder` etc) have been deprecated and
275
will be removed in a future version. These plots are poorly tested and
276
poorly supported and really belong in a separate package.
277
278
* The default guide for continuous color/fill scale is now colourbar.
279
(Kohske Takahashi. Fixes #555)
280
281
* The arrowhead of geom-path and geom-segment with `arrow = TRUE` is
282
now filled with the same colour as the path.
284
* The algorithm for calculating breaks locations has been changed from
285
`pretty_breaks()` to `extended_breaks()` from the 'labeling' package
286
by Justin Talbot. (Winston Chang. Fixes #580)
287
288
* `scale_type`, the function used to pick which type of scale should be
289
used for a given type of input variable is now an S3 generic. That
290
means that if you want to add a new default type of scale you can
291
provide a method - it should return a string giving the name of the
292
scale to use (e.g. "continuous", "discrete", "date")
293
294
* When there are multiple guides (legends), the order that they are
295
displayed can now be controlled manually. (Kohske Takahashi. Fixes
296
#470)
297
298
* When a scale for a given aesthetic is added to a plot more than once,
299
display a message indicating that the first scale will be replaced.
300
(Winston Chang. Fixes #518)
301
304
* All geoms and stats now document their aesthetics. (Thanks to joranE.
305
Fixes #447)
309
* `scale_x_continuous` now respects `na.value` (Fixes #522)
310
311
* `geom_map` now correctly uses set aesthetics (e.g. `colour = "green"`)
312
313
* Setting breaks outside the limits of the x or y axis no longer causes
314
errors. (Kohske Takahashi. Fixes #552)
315
316
* `facet_locate` no longer evaluates unneeded expressions. (Winston
317
Chang. Fixes #565)
318
319
* `annotation_map` now gets group id from munched data. (Winston Chang.
320
Fixes #568)
321
324
* Both axis lines are now drawn above the plotting area panel.
325
(Winston Chang. Fixes #585)
326
327
* The jitter resolution is now correctly calculated when the data
328
does _not_ include zero. (Thanks to Karl Ove Hufthammer. Fixes #572)
329
330
* Legend icons for `geom_boxplot` now display linetype. (Kohske
331
Takahashi. Fixes #608)
332
333
* Facets now appear in the correct order when layers with different
334
factor levels are added. (Winston Chang. Fixes #543)
335
336
* Distances in polar coordinates are calculated along spiral arcs,
337
instead of straight-line distance. (Winston Chang. Fixes #471)
338
339
* `fortify.SpatialPolygonsDataFrame` now uses the correct ordering.
340
(Charlotte Wickham. Fixes #434)
341
342
* `stat_vline` and `stat_hline` no longer throw errors when
343
`xintercept` and `yintercept` are passed to them. (Winston Chang.
344
Fixes #624)
345
346
ggplot2 0.9.1
347
----------------------------------------------------------------
348
351
* `ggstructure` and `ggorder`, which call `ggpcp`, no longer have a
352
`scale` argument since `ggpcp` does not have one.
353
354
* built in datasets have been checked to make sure they use characters,
355
factors and ordered factors appropriately
356
357
* `geom_raster` and `annotation_raster` gain new `interpolate` argument for
358
controlling whether or not rasters are interpolated
359
360
* Added `plot` as an alias for `print` for ggplot objects.
361
362
* Visual tests have been moved to /visual_test and modified to work with the
363
vtest package. (Thanks to Winston Chang)
364
365
* `geom_dotplot`: now supports stacking. It uses `stackgroups = TRUE` instead
366
of the usual position="stack", for technical reasons. It also will stack in
367
the x direction when binning along the y axis. (Thanks to Winston Chang)
368
369
* `geom_rug` now allows control over which sides to put the rug lines, with
370
the `sides` argument. (Thanks to Winston Chang)
371
372
* `annotation_logticks`: a new geom that adds tick marks on the inside of the
373
plotting rectangle that have diminishing spacing for log-10 axes. (Thanks
374
to Winston Chang)
375
376
* Coordinate expansion is now handled by an interaction of the scale and
377
coord, rather than by the scale only. Also, the `wise` argument is no
378
longer needed. (Thanks to Winston Chang and Kohske Takahashi)
379
384
* `munch_range` properly reports the x and y range. (Thanks to Winston Chang)
385
386
* `stat_bin2d` handles data with NA in the position variables. Error was
387
triggered when scale was limited to a range smaller than the range of
388
the data. (Bug reported by Tao Gao; diagnosed and fixed by Brian Diggs)
389
390
* `scale_*_identity` will now produce a legend when `guide = "legend"` and no
391
breaks or labels are supplied (Fixes #453)
392
393
* `geom_map` now works with `coord_map` (Fixes #480)
394
395
* discrete scales now accept named vectors of labels again (Fixes #427)
396
397
* `geom_raster` works better with categorical input (Fixes #463)
399
* `qplot` no longer uses non-standard evaluation for geom/stat arguments - it
400
doesn't seem to be needed and was causing problems when qplot was used in
401
special environments (e.g. in knitr) (Fixes #377)
402
403
* `coord_train.polar` and `coord_train.trans` remove NAs from breaks.
404
(Thanks to Winston Chang. Fixes #422)
405
406
* Theta breaks with `coord_polar` have equal angular spacing. (Thanks to
407
Winston Chang and Kohske Takahashi. Fixes #288)
408
409
* Empty data frames are now handled correctly: layers with empty data are
410
dropped silently, instead of inheriting data from the plot. (Thanks to
413
* The alpha value of set colours is now preserved by default. To return to the
414
old behaviour, set `alpha = 1`. (Fixes #475)
415
416
* `scale_*_manual` will throw an error if you have too few values. (Fixes
417
#512)
419
* `facet_wrap` gets the `as.table` argument back. (Fixes #497)
421
* `resolution` now returns 1 when range is zero. (Fixes #526)
422
423
* Titles are displayed above legend when legend is on top. (Thanks to
424
Kohske Takahashi. Fixes #432)
425
426
* Specifying breaks outside coord limits works. (Thanks to Kohske Takahashi.
427
Fixes #430)
428
429
* `renames_aes` now uses exact matching instead of partial matching. (Thanks
430
to Winston Chang. Fixes #529)
431
432
* `labs()` now works with American spellings. (Thanks to Winston Chang.
433
Fixes #521)
434
435
* `stat_density2d` sets the limits for `kde2d` from the limits of the x and
436
y scales. (Thanks to Winston Chang)
437
438
ggplot2 0.9.0
439
----------------------------------------------------------------
440
443
* `annotation_custom`: a new geom intended for use as static annnotations that
444
are the same in every panel. Can be used to add inset plots, tables, and
445
other grid-based decorations inside the plot area (Contributed by Baptiste
446
Auguié).
448
* `geom_map`: a new special case of `geom_polygon` useful when you are drawing
449
maps, particularly choropleth maps. It is matched with `annotation_map`, an
450
even faster special case when you want the same map drawn in each panel.
452
* `geom_raster` is a special case of `geom_tile` for equally sized rectangular
453
tiles. It uses the raster functionality of R graphics devices for massively
454
increased speed and much decreased file sizes. It is matched with
455
`annotation_raster`, an even faster special case, for when you want to draw
456
the same raster in each panel.
458
* `geom_violin`: an implementation of violin plots, which are a way of
459
visualizing kernel density estimates. (Thanks to Winston Chang)
461
* `geom_dotplot`: dot plots, as described in Wilkinson (1999). To bin the
462
data, it uses `stat_bindot` to bin the data, which has two methods: histodot
463
and dot-density. Histodot binning uses fixed-width bins just like
464
`stat_bin`, while dot-density binning uses variable-width bins. A new grob,
465
`grob_dotstack` is used to render the dots. (Thanks to Winston Chang)
466
467
* New fortify methods have been added for objects produced by the `multcomp`
468
package.
470
* `stat_summary2d` and `stat_summary_hex`. These are work like `stat_bin2d`
471
and stat_binhex but allow any summarisation function (instead of just
472
count). They are 2d analogs of `stat_summary`
474
* `facet_grid`: The space argument now supports `free_x` and `free_y` next to
475
`free` and `fixed, this allows the user to adjust the spatial scaling of the
476
facets in either the x or y direction. This is especially useful when the
477
scales are very different. In this case space = `free` could make some
478
facets very small. (Thanks to Willem Ligtenberg)
482
* Thorough clean up and checking, including documenting all arguments, adding
483
systematic cross-references, and adding commonly requested examples. Thanks
485
486
* Complete series of aesthetics pages (grouped subsets of aesthetics) with
487
examples of how to use the major ones, see e.g. `?fill`, `?shape`, `?x`,
491
* Added "translate" pages to demonstrate usage between qplot and ggplot, GPL,
492
base and lattice graphics: `?translate_qplot_base`, `?translate_qplot_gpl`,
493
`?translate_qplot_lattice`, `?translate_qplot_ggplot`,
497
* Scales have been rewritten to use the new `scales` package, which does a
498
much better job at defining what a scale is and making it easier for you to
499
create your own scales. Scales should now behave much more consistently, and
500
it should be easier for me to add new features in the future.
501
502
* `breaks` parameter can now be a function, which will be passed the scale
503
limits and expected to return a character vector of breaks
504
505
* `labels` parameter can now be a function - this replaces the previous
506
formatter function that only some scales possessed, and the `major` argument
507
to the data time scales. This function should take a vector of breaks as
508
input, and return a character vector or list of expressions as output. See
509
`comma_format`, `dollar_format`, `percent_format`, `scientific_format`,
510
`parse_format` and `math_format` for examples
512
* Transformations are now provided by the scales package - see `?trans_new`
513
for list of available transformations, and how to create your own. The
514
transformations in this package should do a better job at computing default
515
breaks.
516
517
* Transformations for continuous scales are now detected automatically when
518
the default scales are added. This ensures that dates and date times will
519
display correctly when used for any aesthetic - previously they only worked
520
with position scales. The system is now also easier to extend to new types
523
* All scales now accept a `na.value` parameter which provides an aesthetic
524
value to be used for `NA` values in the data. Colour/fill scales default to
525
grey, which should stand out as different from non-missing values.
527
* The new `oob` (out of bounds) parameter controls how scales deals with
528
values outside the limits. The default action is `censor` - see `clip` for
529
another option.
530
531
* Only `scale_x_log10`, `scale_x_sqrt` and `scale_x_reverse` provided as
532
convenience functions for x and y scales. Use e.g. `scale_x_continuous(trans
533
= "log")` to access others
535
* `set_default_scale` has been removed. If you want to change the default
536
scale for an aesthetic, just create a function called
537
`scale_aesthetic_continuous` or `scale_aesthetic_discrete` that returns the
538
scale that you want. For example:
540
p <- qplot(mpg, wt, data = mtcars, colour = factor(cyl))
541
p
542
scale_colour_discrete <- scale_colour_brewer
543
p
544
545
* Scales now automatically shrink to what is actually displayed on the plot,
546
not the underlying data used for statistical transformation. If you want the
547
old behaviour, supply `shrink = FALSE` to the facetting specification.
548
(Fixes #125)
549
550
* `scale_colour_gradient` and `scale_fill_gradient` now use a colour scheme
551
with constant hue but varying chroma and luminance. This is better because
552
it creates a natural ordering inline with the order of the colour values.
553
554
FACETS
555
556
* Converted from proto to S3 objects, and class methods (somewhat) documented
557
in `facet.r`. This should make it easier to develop new types of facetting
558
specifications.
559
560
* The new `facet_null` specification is applied in the default case of no
561
faceting. This special case is implemented more efficiently and results in
562
substantial performance improvements for non-facetted plots.
564
* Facetting variables will no longer interfere with aesthetic mappings -
565
`facet_wrap(~ colour)` will no longer affect the colour of points.
566
567
DEVELOPMENT
568
569
* ggplot2 has moved away from the two (!!) homegrown documentation systems
570
that it previously relied on, and now uses roxygen extensively. The current
571
downside is that this means that ggplot2 website can no longer be updated,
572
but I hope work with the `helpr` package will resolve that shortly.
573
574
* ggplot2 now uses a `NAMESPACE`, and only exports functions that should be
575
user visible - this should make it play considerably more nicely with other
576
packages in the R ecosystem. Note that this means you now need to explicitly
577
load `plyr` (and other packages) if you are using them elsewhere in your
578
code.
579
580
* ggplot2 now has a start on a set of automated tests. As this test suite
581
expands it will help me ensure that bugs stay fixed, and that old bugs don't
582
come back in new versions. A test suite also gives me more confidence when
583
I'm modifying code, which should help with general code quality.
584
585
COORDS
586
587
* Converted from proto to S3 objects, and class methods (somewhat) documented
588
in `coord.r`. This should make it easier to develop new types of coordinate
589
systems.
590
591
* Added a new method `coord_range` for finding the x and y range even after
592
coordinates have been transformed to other names (eg., theta and r). (Thanks
593
to Winston Chang)
594
596
597
* When printing a ggplot2 object, the rendered plot information is returned
598
invisibly. You can capture this with (e.g.) `x <- print(qplot(mpg, wt, data
599
= mtcars))` and in the future will be able to use it to get information
600
about the plot computations, such as the range of all the scales, and the
601
exact data that is plotted.
602
603
* Drawing a plot takes place in three documented steps: `ggplot_build` which
604
creates a list of data frames ready for rendering builds, `ggplot_gtable`
605
which creates a `gtable` of grobs, and `grid.draw` which renders the grobs
606
on screen. Each of these returns a data structure which should be useful for
607
understanding and modifying the rendered plot. This is still a work in
608
progress, so please ask questions if anything is confusing.
609
610
* The `drop` and `keep` parameters to `ggsave` and `print.ggplot` have been
611
dropped, as the data structure returned by `ggplot_gtable` is sufficiently
612
rich enough to remove the need for them.
613
614
* Axis labels are now centred underneath the panels (not the whole plot), and
615
stick close to the panels regardless of the aspect ratio.
619
* Guides (particularly legends) have been rewritten by Kohske Takahashi to
620
provide considerably more layout flexibility.
621
622
* `guide_legend` now supports multi-row/column legend and reversed order,
623
gives more flexible positioning of title and label, and can override
624
aesthetics settings. This is useful, for example, when alpha value in a
625
panel is very low but you want to show vivid legend.
626
627
* `guide_colorbar` is a guide specially for continuous colour scales as
628
produced by colour and fill scales.
629
630
MINOR CHANGES
631
632
* `geom_text` now supports `fontfamily`, `fontface`, and `lineheight`
633
aesthetics for finer control over text display. (Thanks to Kohske Takahashi
634
for the patch. Fixes #60)
635
636
* `collide`, which powers `position_dodge` and `position_stack`, now does not
637
error on single x values (Thanks to Brian Diggs for a fix. #157)
638
639
* `...` in `ggplot` now passed on to `fortify` method when used with an object
640
other than a data frame
641
642
* `geom_boxplot`: outlier colour and shape now default to values set by the
643
aesthetic mapping (thanks to suggestion by Ben Bolker), the width of the
644
median line is now `fatten` times the width of the other lines (thanks to
645
suggestion by Di Cook), and the line type can now be set. Notched box
646
plots are now supported by setting `notch = TRUE` (thanks to Winston Chang
647
for the patch).
648
649
* `ggsave` can work with cm and mm `units` (Thanks to patch from Jean-Olivier
650
Irisson)
651
652
* `scale_shape` finally returns an error when you try and use it with a
653
continuous variable
654
655
* `stat_contour` no longer errors if all breaks outside z range (fixes #195).
656
657
* `geom_text` remove rows with missing values with warning (fixes #191)
658
659
* New generic function `autoplot` for the creation of complete plots
660
specific to a given data structure. Default implementation throws
661
an error. It is designed to have implementations provided by other
664
* `ggpcp` loses the `scale` argument because it relied on reshape(1) code
665
666
* `map_data` passes `...` on to `maps::map` (Fixes #223)
668
* `coord_fixed` accepts `xlim` and `ylim` parameters to zoom in on x and y
669
scales (Fixes #91)
671
* ggplot2 will occasionally display a useful hint or tip on startup. Use
672
`suppressPackageStartupMessages` to eliminate
674
* `stat_binhex` uses correct bin width for computing y axis bounds. (Fixes
675
#299, thanks to Dave Henderson for bug report and fix.)
677
* `stat_smooth` now adjusts confidence intervals from `loess` using a
680
* `stat_smooth` reports what method is used when method is "auto". It also
681
picks the method based on the size of the largest group, not individually by
682
group. (Thanks to Winston Chang)
684
* `stat_bin` and `geom_histogram` now use right-open, left-closed intervals by
685
default. Use `right = TRUE` to return to previous behaviour.
687
* `geom_vline`, `geom_hline`, and `geom_abline` now work with non-Cartesian
688
coordinate systems. (Thanks to Winston Chang)
689
690
ggplot2 0.8.9
691
----------------------------------------------------------------
692
693
A big thanks to Koshke Takahashi, who supplied the majority of improvements
694
in this release!
695
696
GUIDE IMPROVEMENTS
697
698
* key size: can specify width and height separately
699
700
* axis: can partially handle text rotation (issue #149)
701
702
* legend: now can specify the direction of element by opts(legend.direction =
703
"vertical") or opts(legend.direction = "horizontal"), and legend box is
704
center aligned if horizontal
705
706
* legend: now can override the alignment of legend box by
707
opts(legend.box = "vertical") or opts(legend.box = "horizontal")
708
709
* legend: now can override legend title alignment with opts(legend.title.align
710
= 0) or opts(legend.title.align = 1)
711
712
* legend: can override legend text alignment with opts(legend.text.align = 0)
713
or opts(legend.text.align = 1)
714
715
BUG FIXES
716
717
* theme_*: can specify font-family for all text elements other than geom_text
718
719
* facet_grid: fixed hirozontal spacing when nrow of horizontal strip >= 2
720
721
* facet_grid: now can manually specify the relative size of each row and column
722
723
* is.zero: now correctly works
724
725
* +: adding NULL to a plot returns the plot (idempotent under addition)
726
(thanks to suggestion by Matthew O'Meara)
727
728
* +: meaningful error message if + doesn't know how to deal with an object
729
type
730
731
* coord_cartesian and coord_flip: now can wisely zoom when wise = TRUE
732
733
* coord_polar: fix point division bugs
734
735
* facet_grid: now labels in facet_grid are correctly aligned when the number
736
of factors is more then one (fixes #87 and #65)
737
738
* geom_hex: now correctly applies alpha to fill colour not outline colour
739
(thanks to bug report from Ian Fellows)
740
741
* geom_polygon: specifying linetype now works (thanks to fix from Kohske
742
Takahashi)
743
744
* hcl: can now set c and l, and preserves names (thanks to suggestion by
745
Richard Cotton)
746
747
* mean_se: a new summary function to work with stat_summary that calculates
748
mean and one standard error on either side (thanks to contribution from
749
Kohske Takahashi)
750
751
* pos_stack: now works with NAs in x
752
753
* scale_alpha: setting limits to a range inside the data now works (thanks to
754
report by Dr Proteome)
755
756
* scale_colour_continuous: works correctly with single continuous value (fixes
757
#73)
758
759
* scale_identity: now show legends (fix #119)
760
761
* stat_function: now works without y values
762
763
* stat_smooth: draw line if only 2 unique x values, not three as previously
764
765
* guides: fixed #126
766
767
* stat_smooth: once again works if n > 1000 and SE = F (thanks to bug report
768
from Theiry Onkelinx and fix from Kohske Takahashi)
769
770
* stat_smooth: works with locfit (fix #129)
771
772
* theme_text handles alignment better when angle = 90
773
774
ggplot2 0.8.8
775
----------------------------------------------------------------
776
777
Bug fixes:
778
779
* coord_equal finally works as expected (thanks to continued prompting from
780
Jean-Olivier Irisson)
781
782
* coord_equal renamed to coord_fixed to better represent capabilities
783
784
* coord_polar and coord_polar: new munching system that uses distances (as
785
defined by the coordinate system) to figure out how many pieces each segment
786
should be broken in to (thanks to prompting from Jean-Olivier Irisson)
787
788
* fix ordering bug in facet_wrap (thanks to bug report by Frank Davenport)
789
790
* geom_errorh correctly responds to height parameter outside of aes
791
792
* geom_hline and geom_vline will not impact legend when used for fixed
793
intercepts
794
795
* geom_hline/geom_vline: intercept values not set quite correctly which
796
caused a problem in conjunction with transformed scales (reported by Seth
797
Finnegan)
798
799
* geom_line: can now stack lines again with position = "stack" (fixes #74)
800
801
* geom_segment: arrows now preserved in non-Cartesian coordinate system (fixes
802
#117)
803
804
* geom_smooth now deals with missing values in the same way as geom_line
805
(thanks to patch from Karsten Loesing)
806
807
* guides: check all axis labels for expressions (reported by Benji Oswald)
808
809
* guides: extra 0.5 line margin around legend (fixes #71)
810
811
* guides: non-left legend positions now work once more (thanks to patch from
812
Karsten Loesing)
813
814
* label_bquote works with more expressions (factors now cast to characters,
815
thanks to Baptiste Auguie for bug report)
816
817
* scale_color: add missing US spellings
818
819
* stat: panels with no non-missing values trigged errors with some statistics.
820
(reported by Giovanni Dall'Olio)
821
822
* stat: statistics now also respect layer parameter inherit.aes (thanks to bug
823
report by Lorenzo Isella and investigation by Brian Diggs)
824
825
* stat_bin no longer drops 0-count bins by default
826
827
* stat_bin: fix small bug when dealing with single bin with NA position
828
(reported by John Rauser)
829
830
* stat_binhex: uses range of data from scales when computing binwidth so hexes
831
are the same size in all facets (thanks to Nicholas Lewin-Koh for the bug
832
report)
833
834
* stat_qq has new dparam parameter for specifying distribution parameters
835
(thanks to Yunfeng Zhang for the bug report)
836
837
* stat_smooth now uses built-in confidence interval (with small sample
838
correction) for linear models (thanks to suggestion by Ian Fellows)
839
840
* stat_spoke: correctly calculate stat_spoke (cos and sin were flipped, thanks
841
to Jean-Olivier Irisson for bug report and fix)
842
843
ggplot2 0.8.7
844
----------------------------------------------------------------
845
846
* coord_map gains xlim and ylim arguments to control region of projection
847
848
* corrected label generation for computed aesthetics (..x..) and special
849
names (`x x`)
850
851
* fullseq: now always returns vector of length two, even when range is 0
852
853
* geom_point legend takes more care to ensure that fill colours will be shown
854
855
* legend: fixed scale merging bug when labels were set manually
856
857
* scale_area: gains a legend argument like all other scales
858
859
* scale_colour_brewer: gains na.colour argument to set colour of missing
860
values
861
862
* stat_bin2d: fix typo in breaks calculation
863
864
* stat_bin: deals with floating point rounding issues using the same
867
* stat_density2d: fixed bug when contour = FALSE (Thanks to Takahashi Kohske)
868
869
870
ggplot2 0.8.6
871
----------------------------------------------------------------
872
873
NEW FEATURES
874
875
* trans_log1p: new log + 1 transformer contributed by Jean-Olivier Irisson
876
877
BUG FIXES
878
879
* aesthetics: fixed bug when overriding aesthetics with NULL
880
881
* annotate: adds layers with legend = FALSE
882
883
* coord_equal: correctly place tick marks (Fixes #61)
884
885
* documentation: usage statements should now be spread over multiple lines
886
887
* fortify.SpatialPolygonsDataFrame: fixed bug when region variable had missing values
888
889
* legend: don't try and display legend when unnecessary scale added
890
891
* legend: text labels now correctly left-aligned when non-numeric
892
893
* order aesthetic now correctly affects position adjustments (Fixes #70)
894
895
* qplot loads facetting variables from global environment more correctly
896
897
* scale_date and scale_date_time now work with infinite positions
898
899
* scale_date and scale_date_time now take expand argument
900
901
* scales were not getting automatically added in many situations (Fixes #69)
902
903
* scale_manual was not returning labels in the correct format and so legends
904
were not getting merged correctly
905
906
* stat_contour: fix error if x or y coordinates were negative
907
908
* stat_bin: now copes with bars of zero height (Fixes #72)
909
910
* stat_qq: always use sorted data (rather than interpolated quantiles) on
911
sample axis. This makes it behave more like qqnorm
912
913
* stat_quantile: correctly group results
914
915
* xlim now works with datetimes
916
917
* all plyr functions prefixed with their namespace to avoid clashes with other
918
packages (thanks to Steve Lianoglou)
919
920
921
ggplot2 0.8.5
922
----------------------------------------------------------------
923
924
NEW FEATURES
925
926
* geom_text gains parse argument which makes it possible to display
927
expressions. (Implements #50)
928
929
* all scales now have legend parameter, which defaults to TRUE. Setting to
930
false will prevent that scale from contributing to the legend (Implements
931
#27)
932
933
* default axis labels and legend titles are now stored in the options, instead
934
of in each scale. This fixes a long standing bug where it was not easy to
935
set the label for computed variable, such as the y axis on a histogram.
936
Additionally, it means default scales are only added to the plot until just
937
prior to plotting, instead of the previous behaviour where scales where
938
added as layers were added - this could cause problems if you later modified
939
the underlying data. (Implements #28)
940
941
* coord_equal: when ratio = NULL (the default), it will adjust the aspect
942
ratio of the plot, rather than trying to extend the shortest axis.
943
944
* x and y positions can be set to Inf or -Inf to refer to the top/right and
947
* expand_limits(): a new function to make it easy to force the inclusion of
948
any set of values in the limits of any aesthetic.
949
950
NEW FEATURES (MINOR)
951
952
* aesthetics: when _setting_ an aesthetic, you may only set it to a single
953
value. This was always a good idea, but now it is enforced with an
954
informative error message.
955
956
* stat_contour bump up default number of contours
957
958
* stat_density2d: make number of grid points used for density estimation
961
* geom_bin now allows you to set whether bins used intervals of the form
962
(a, b] or [a, b) with the "right" parameter (implements #20)
963
964
* geom_path: linejoin, lineend and linemitre are now user controllable
967
* scales: all scales check that breaks are supplied if labels are, and
968
that breaks and labels are the same length (implements #40)
969
970
* scales: if breaks are a named vector, the names will be used as labels
971
(thanks to suggestion by David Kahle)
972
973
* scale_colour_gradient, scale_colour_gradient2 & scale_colour_gradientn now
974
have formatter argument to match scale_continuous
975
976
* updated citation to refer to the ggplot2 book
977
978
BUG FIXES
979
980
* coord_cartesian now correctly sets limits when one or both of the position
981
scales are non-linear. (fixes #17)
982
983
* coord_equal: now works with non-linear scales (fixes #13)
984
985
* coord_map sets aspect ratio correctly (fixes #4)
986
987
* coord_polar correctly combines labels on end of axis if expressions
988
(fixes #39)
989
990
* coord_trans now respects scale expand parameter (expansion occurs after
993
* facet_grid with scales = "free" and space = "free" now calculates space
994
correctly if the range of the scale is < 1 (fixes #1)
995
996
* facet_grid works once more when facetting with multiple variables in one
997
direction (fixes #11)
998
999
* facet_wrap now sets aspect ratio correctly
1000
1001
* facet_wrap now maintains original order of data
1002
1003
* geom_hline and geom_vline now work with coord_flip (fixes #30)
1004
1005
* geom_path drops missing values at start and end of each line (fixes #41)
1006
1007
* scale_shape_discrete, scale_size_continuous, scale_alpha and
1008
scale_linetype_discrete added to scales to match naming convention of all
1009
other scales (fixes #47)
1010
1011
* legends now correctly calculate label widths (fixes #38)
1012
1013
* legends will only merge if both the title and all labels are the same.
1014
(fixes #16)
1015
1016
* legends: fix for bug #19: Legend with three constraints doesn't work
1017
1018
* stat_contour & stat_density2d: fix grouping bugs (issue #7)
1019
1020
* xlim, ylim: fix bug when setting limits of discrete scales
1021
1022
1023
ggplot2 0.8.4
1024
----------------------------------------------------------------
1025
1026
* aes and aes_string both convert prefixes to full names
1027
* aesthetics: corrected list of aesthetics to include american spelling of
1028
colour as well as base R abbreviations
1029
* aesthetics: fix bug in detecting which aesthetics are calculated
1030
* aes_string treats NULL as "NULL"
1031
* annotate now works with missing x and y (e.g. for geom_rect)
1032
* continuous scale limits now automatically sorted
1033
* coord_polar: fix bug if breaks not all inside limits
1034
* facet_wrap: can now specify both ncol and nrow without getting an error
1035
* facet_wrap: now works with statistics that produce both x and y values (e.g.
1036
stat_qq)
1037
* fullseq now adds additional break on bottom if necessary, so that the
1038
include.lowest argument in cut never comes into play (this the source of a
1039
potential bug in histograms)
1040
* geom_boxplot: alpha now affects fill colour of boxes only
1041
* geom_path correctly switches to segments if varying alpha used (thanks to
1042
Karl Ove Hufthammer for the report and Baptiste Auguie for the fix)
1043
* geom_point: the alpha aesthetic now also affects the fill.
1044
* geom_ribbon always sorts input to avoid problems with certain pathological
1045
inputs
1046
* geom_smooth was incorrectly applying alpha to line colour in the legend
1047
* nullGrob renamed to zeroGrob to avoid name conflict with grid
1048
* position_collide now works with missing values
1049
* position_stack: fixed bug in detection of overlap for negative values
1050
* scale_discrete_position now uses drop argument to force dropping of unused
1051
levels
1052
* scale_gradient, scale_gradient2 and scale_gradientn now uses label
1053
parameters, if supplied
1054
* scale_x_inverse, scale_y_inverse now actually work, and added recip as alias
1055
* stat_qq now correctly groups results
1056
* stat_smooth will not try and fit a line to 2 or fewer points (previously
1057
didn't try for only 1 point)
1058
* stat_spoke now works with reversed scales
1059
* grouping: now consistent between different geoms (Issue #33)
1060
1061
ggplot2 0.8.3
1062
----------------------------------------------------------------
1063
1064
New features
1065
1066
* alpha: new aesthetic, with scale alpha. Where a geom has both fill and colour, alpha affects the fill.
1067
1068
* annotate: new annotate function to make it easier to add annotations to plots
1069
1070
* facet_grid now takes strip label function from parameter labeller, not theme setting
1071
1072
* facet_grid: gains as.table argument to control direction of horizontal facets
1073
1074
* fortify: full set of methods for turning data from the sp package into data frames that can be plotted with ggplot2
1075
1076
* geom_errorbarh: new geom for horizontal error bars
1077
1078
* labels_parsed and labels_bquote functions to make it easier to display expressions on facet labels
1079
1081
1082
* subset: experimental new feature. Layers now have a subset argument, which takes subsets formatted like .(var1 < 5, var2 == 3) etc.
1083
1084
* xlim and ylim now work recognise Date and POSIXct classes to create date and date_time scales respectively
1085
1086
Dealing with missing values
1087
1088
* facet_wrap: add drop argument to control whether or not panels for non-existent combinations of facetting variables should be dropped or not. Defaults to TRUE
1089
1090
* scale_discrete: empty factor levels will be preserved, unless drop = TRUE
1091
1092
Bug fixes
1093
1094
* added presidents dataset from book to package
1095
1096
* American spelling of color accepted in as geom parameter, and all colour
1097
scales have alias spelled color (e.g. scale_color_hue)
1098
1099
* facet_wrap: contents guaranteed to be clipped to panel
1100
1101
* facet_wrap: corrected labelling when facetting by multiple variables (thank
1102
to Charlotte Wickham for a clear test case)
1103
1104
* geom_histogram now works with negative weights (provided position =
1105
"identity"). This is useful for creating back to back histograms.
1106
1107
* geom_step: improve legend
1108
1109
* geom_text: better legend
1110
1111
* geom_vline, geom_hline, geom_abline: should work in yet more situations
1112
1113
* resolution: fixed bug in computation of resolution that lead to (e.g.)
1114
incorrect boxplot widths when there was only a single x value in a group.
1115
1116
* position_stack: fixed bug in detection of overlap for very large bins
1117
1118
* scale_discrete: factor levels no longer mistakenly reordered
1119
1120
* scale_hue: now spans full range of hue if it less than 360 degrees
1121
1122
* scale_hue: rotated default hue range by 15 degrees to avoid unfortunate
1123
red-green contrast in two colour case
1124
1125
* show now works with ggplot objects
1126
1127
* stat_sum: fixed bug which resulted in dropped aesthetics
1128
1129
* stat_summary: now warns when dropping records with missing values
1130
1131
* stat_summary: should be a little faster
1132
1133
* stat_summary: correctly passes ... arguments on fun.data
1134
1135
* theme_bw: corrected justification of axis.text.y
1136
1137
* trans: bug fixes to logistic transformation
1138
1139
* order aesthetic should work again
1140
1141
ggplot2 0.8.2
1142
----------------------------------------------------------------
1143
1144
New features
1145
1146
* borders, fortify.map and map_data to make it easier to draw map borders and
1147
choropleth maps
1148
1149
* cut_interval and cut_number utility functions to discretise continuous
1150
variables
1151
1152
* stat_summary has reparameterised to make it easier to specify different
1153
summary functions. It now has four parameters: fun.y, fun.ymin and
1154
fun.ymax; and fun.data. See the documentation for stat_summary for more
1155
details
1156
1157
Minor improvements
1158
1159
* ggfluctuation: default to aspect ratio that produces squares
1160
1161
* ggsave: filename now first parameter, not second
1162
1163
* qplot: if sample aesthetic is used, stat automatically set to qq
1164
1165
* scale_datetime: improved breaks calculation
1166
1167
* scale_gradient: better default colour scheme from red to blue (thanks to
1168
Charlotte Wickham for providing the Munsell colours)
1169
1170
* scale_size and scale_area: increased default size range
1171
1172
* stats: all give useful error message if missing a required aesthetic
1173
1174
* theme_set warns if missing needed theme elements
1175
1176
* theme_text: now possible to right and left align text with hjust=0 and hjust=1 respectively
1177
1178
Bug fixes
1179
1180
* be explicit about is.discrete to avoid clash with Hmisc
1181
1182
* facet_wrap: work around R bug so no longer crashers when ncol = 1
1183
1184
* geom_errorbar now works correctly with dashed lines
1185
1186
* geom_path will now silently ignore lines with less than 2 points (instead of
1187
throwing a mysterious error as before)
1188
1189
* geom_path now responds to the size aesthetic once more
1190
1191
* geom_polygon etc now correctly displays linetype on legends
1192
1193
* geom_step now works with multiple groups
1194
1195
* geom_vline and geom_hline: fix bug when mapping intercept to variable in
1196
data frame
1197
1198
* ggsave: path parameter correctly sets path
1199
1200
* guides: fix broken legend from default stat aesthetics (e.g. for stat_sum)
1201
1202
* scale_manual now works better with missing values
1203
1204
* scale_manual: labels now correctly sets legend labels.
1205
1206
* stat_density_2d: no longer passes unnecessary parameters to kde2d causing an
1207
error message (seen when setting aesthetics with qplot)
1208
1209
* stat_pointrange: better relationship between point and line widths
1210
1211
* stat_sum now correctly preserves other aesthetic columns (should be a bit faster too)
1212
1213
1214
ggplot2 0.8.1
1215
----------------------------------------------------------------
1216
1217
New features
1218
1219
* new labs, xlab & ylab functions for easily modifying axis labels and legend titles
1220
1221
* qplot now guesses what geom you want based on the position aesthetics that you provide:
1222
1223
* both x & y: scatterplot
1224
1225
* only x: histogram
1226
1227
* only y: scatterplot of seq_along(y) vs y
1228
1229
* scale_datetime: a first attempt at a scale for date time objects of class POSIXt
1230
1231
Aesthetic improvements
1232
1233
* legends should now work in cases where you have multiple layers the use the
1234
same geom and have different aesthetic mappings
1235
1236
* theme: new theme setting legend.key.size determines size of keys in legend
1237
1238
* theme: new theme setting plot.margins to control the plot margins
1239
1240
* tweaks to plot and legend layout
1241
1242
Other minor improvements
1243
1244
* geom_point warns if missing values present in data and not displayed on plot
1245
1246
* geom_smooth gives a more accurate warning when you have incorrectly specified the grouping
1247
1248
* geom_smooth will switch to an alternative smoothing method (mgcv::gam(y ~
1249
s(x, bs = "cr"))), when there are more than 1000 observations
1250
1251
* layers gain a legend argument, which allow you to force the layer either
1252
into (TRUE) or out of (FALSE) the legend
1253
1254
Bug fixes
1255
1256
* coord_equal now calculates scales correctly again
1257
1258
* coord_flip: flips axes labels again too
1259
1260
* coord_trans fix bug where transformation incorrect
1261
1262
* facet_grid: fix bug where tick labels where being produced outside the range of the axes
1263
1264
* facet_wrap: fixed bug with ncol = 1 or nrow = 1
1265
1266
* facet_wrap: labels correctly clipped to axis ranges
1267
1268
* facet_wrap: labels will match panels even when factor levels are not in alphabetical order
1269
1270
* facet_wrap: now works when a layer doesn't contain every level of the faceting variables
1271
1272
* geom_abline should now work in a wider variety of situations
1273
1274
* geom_smooth now gives correct asymmetric standard errors with generalised
1275
linear models (thanks to Thierry Onkelinx)
1276
1277
* geom_vline and geom_hline now correctly transform their intercepts if the
1278
scale is transformed
1279
1280
* geom_vline and geom_hline: now use xintercept and yintercept instead of intercept
1281
1282
* legend.position and legend.justification work again
1283
1284
* position_dodge now works for any number of elements with smaller widths, not just 2!
1285
1286
* scale_discrete_position: does a better job of calculating axis limits when
1287
plotting a mixture of continuous and discrete values (e.g. with geom_jitter)
1288
1289
* summary: tweaks to improve output
1290
1291
1292
ggplot2 0.8 (2008-11-18)
1293
----------------------------------------
1294
1295
* The two biggest new features in this release are the (long awaited) ability
1296
to have scales that vary between facets, and a faceting system that works
1297
like lattice (facet_wrap). From qplot, you can use facet_wrap by specifying
1298
one sided formula (~ colour, as opposed to . ~ color). To see some potential
1299
uses for these new features, see the "Positioning" chapter of the book.
1300
Implementing these changes has required a rewrite of large parts of the
1301
coordinate systems code, so if anything seems strange with non-Cartesian
1302
coordinate systems, please get in touch.
1303
1304
* I've also made another round of tweaks to make the plots more aesthetically
1305
pleasing.This includes using a bright blue colour for geoms used to add
1306
statistical summaries to plots (contour, smooth, and quantiles), and
1307
tweaking the default colour scheme for the continuous colour scale.Please
1308
let me know what you think.Remember that most of these options are
1309
controllable with the theming system - see the book chapter "Polishing your
1310
plots for publication".
1311
1312
* Accompanying this new release of the package is an updated and expanded
1313
version of the book. The content of the book is now largely complete (~170
1314
pages), and over the coming months I will be working on make it polished and
1315
easy to understand.See http://had.co.nz/ggplot2/book.I love to hear your
1316
feedback about the book, but at this point please don't bother reporting
1317
minor typos, I would much rather hear about what you want to do, but can't
1318
figure out from the book.
1319
1320
Other new features:
1321
1322
* geom_bin2d/stat_bin2d & geom_hex/stat_binhex: for 2d square and hexagon binning, particularly useful for alleviating overplotting in scatterplots
1323
1324
* geom_freqpoly: draws frequency polygons (= stat_bin + geom_line)
1325
1326
* scale_position: both discrete and continuous gain a new formatter argument
1327
to control the default formatting of the axis labels. See also the handy
1328
numeric formatters: dollar, comma and percent
1329
1330
* the xlim and ylim functions now produce discrete scales when appropriate,
1331
and generate a reverse scale if the minimum is greater than the maximum
1332
1333
Improvements
1334
1335
* coord_map gains experimental axis labels
1336
1337
* facet_grid: new support for varying scales in rows and columns
1338
1339
* facet_wrap: new faceter which wraps a 1d ribbon of panels into 2d, in a
1340
similar way to lattice
1341
1342
* geom_bin: gains a drop argument to control whether or not 0 count bins
1343
should be removed
1344
1345
* geom_path and geom_line gain arrows argument to match geom_segment
1346
1347
* ggsave now checks that you are using it with a ggplot plot
1348
1349
* ggsave now produces postscript files that are suitable for embedding in
1350
another document
1351
1352
* ggsave now recognises the .svg extension and will produce svg files, if
1353
possible
1354
1355
* ggsave: default dpi changed to 300, on the assumption that you are saving
1356
the plot for printing
1357
1358
* qplot: uses facet_wrap if formula looks like ~ a + b (as opposed to a ~ b)
1359
1360
Aesthetic tweaks
1361
1362
* geom_bar, geom_polygon, geom_rect, ...: default fill colour is now much
1363
closer to black to match the defaults in other geoms (point, line, etc)
1364
1365
* geom_line, geom_path, geom_segment: lines have squared ends
1366
1367
* geom_point, geom_pointrange and geom_boxplot: now use shape = 16 instead of
1368
19. This shape does not have a border from R 2.8 on, and so will look
1369
better when displayed transparently.
1370
1371
* geom_contour, geom_density2d, geom_quantile and geom_smooth use a bright
1372
blue colour for lines, to make them stand out when used with black points
1373
1374
* scale_gradient: tweaked default colours to make more aesthetically pleasing
1375
1376
* theme: new theme setting panel.margin (a unit) controls gap between panels
1377
in facetted plots (for both grid and wrap)
1378
1379
* theme_gray: removed black border around strips
1380
1381
* theme_bw: tweaks to make black and white theme look a little nicer
1382
1383
Bug fixes
1384
1385
* coord_cartesian now correctly clips instead of dropping points outside of its limits
1386
1387
* facet_grid: margins now grouped correctly in default case (non-aesthetic
1388
variables ignored when generating default group value)
1389
1390
* facet_grid: fix long standing bug when combining datasets with different
1391
levels of facetting variable
1392
1393
* geom_smooth calls stat::predict explicitly to avoid conflicts with packages
1394
that override predict for S4 model classes
1395
1396
* grid: correctly expose subcomponents of strips and axes
1397
1398
* mapping aesthetics to functions of stat output now works in a much wider
1399
variety of cases
1400
1401
* order aesthetic should now work with bars (and in general more geoms)
1402
1403
* position_dodge now works with points and other geoms that lack xmin and xmax
1404
1405
* scale_area works once more
1406
1407
* scale_discrete_position: empty levels are no longer displayed by default, if
1408
you want them, use breaks = levels(myfactor)
1409
1410
* scale_discrete_position: fixed bug when limits were set
1411
1412
* scale_discrete_position: more aesthetically pleasing expansion for a wider
1413
ranges of plots (picks expansion based on whether or not geom with width
1414
used, e.g. bars)
1415
1416
* scale_gradient*: axes are correctly labelled when a transformation is used
1417
1418
* scale_x_log10, scale_y_sqrt etc now correctly transform output from
1419
statistics as well as raw data
1420
1421
* scale_z_* now removed because no longer used by anything
1422
1423
* stat_bin: correctly returns 0 when no observations in a bin (was previously
1424
returning NA)
1425
1426
* stat_quantreg: deal with yet another new output format from quantreg
1427
1428
* stat_contour now has arguments to control the position of the contours,
1429
rather than relying on the z scale
1430
1431
* theme: panel.empty setting removed as it is no longer used
1432
1433
* theme_grey now aliased to theme_gray
1434
1435
* theme_line: setting size works correctly
1436
1437
* theme_rect, theme_segment: size now measured in mm, to be consistent with
1438
the rest of ggplot
1439
1440
ggplot2 0.7
1441
----------------------------------------------------------------
1442
1443
* ggplot2 0.7 introduces a new theming system which allows you to control
1444
(almost) every aspect of the appearance of the plot. This system is
1445
documented in the book chapter "Polishing your plots for publication",
1446
available from http://had.co.nz/ggplot2/book/polishing.pdf.
1447
1448
Bugs fixed
1449
1450
* geom_boxplot: now displays outliers even if only one present
1451
1452
* geom_jitter: setting one jitter direction to 0 now works
1453
1454
* geom_segment: should now work correctly in all coordinate systems (note that
1455
arrows only work in Cartesian coordinates)
1456
1457
* ggsave: correctly uses dpi for raster devices and default dpi changed to 72
1458
(thanks to Brian Ripley for pointing this out)
1459
1460
* ggsave: current device no longer closes if error occurs
1461
1462
* position_jitter: now works correctly with 0 jitter
1463
1464
* remove_missing: some statistics were calculated incorrectly when missing
1465
values were present
1466
1467
* scales: extra scales ignored (again)
1468
1469
* scales: legends respect fixed parameters of the layer
1470
1471
* scales: legends won't appear when aesthetics are mapped to NULL, or set to fixed value
1472
1473
* scales: xend and yend now transformed correctly
1474
1475
* scale_date: breaks are now rounded to correct position
1476
1477
New functionality
1478
1479
* geom_point: can now control colour and fill separately for point glyphs with
1480
borders
1481
1482
* geom_step: now has parameter direction which can take values vh (vertical
1483
then horizontal) or hv (horizontal then vertical) describing the shape of the
1484
stairs
1485
1486
* qplot: new asp argument to set aspect ratio
1487
1488
* qplot: now captures the environment in which it was run, which should make
1489
it much more robust at finding the variables you expect it to find
1490
1491
* qplot: now treats any arguments wrapped in I() as parameters, not
1492
aesthetics, e.g. qplot(mpg, wt, data=mtcars, colour = I("red")) or
1493
qplot(mpg, wt, data=mtcars, size = I(5))
1494
1495
* scale_continuous: new minor_breaks argument to controls position of minor
1496
breaks
1497
1498
* scale_discrete: new discrete position scales which make it possible to
1499
manually position elements
1500
1501
* scale_gradientn: new colour scale which creates gradient between any list of
1502
colours
1503
1504
More consistent interfaces
1505
1506
* can use color instead of colour, and old R names throughout ggplot2
1507
1508
* geom_jitter: Arguments changed to height and width to match other position
1509
adjustments
1510
1511
* scales: any point outside of limits is dropped (this was previously the
1512
behaviour for discrete scales, but not continuous scales)
1513
1514
* scales: limits are consistent across discrete and continuous scales (limits
1515
c(1, NA) form no longer works for continuous scales)
1516
1517
* scales: order of legends reversed to match order of x axis (and to be
1518
consistent with previous versions)
1519
1520
* scale_date: new limits argument to set axis limits
1521
1522
* scale_discrete: all discrete scales accept breaks argument
1523
1524
* scale_discrete: all discrete scales have limits and labels argument to
1525
better control legends
1526
1527
* scale_discrete: character and logical vectors now reliably treated as
1528
discrete scales
1529
1530
* stat_density2d, geom_density2d: density2d used consistently (instead of
1531
density_2d in some places)
1532
1533
Improved aesthetics
1534
1535
* coord_polar: more tweaks to grid lines to enhance appearance
1536
1537
* coord_polar: new expand argument to control whether axes should be expanded
1538
outside the range of the data
1539
1540
* geom_contour, geom_smooth, geom_quantile: now use blue lines
1541
1542
* position_stack, position_dodge: should be more informative if conditions for
1543
stacking/dodging not met
1544
1545
* position_jitter: default amount of jittering tweaked to align with boxplots
1546
etc.
1547
1548
* scales: background colour of legends key matches plot
1549
1550
* themes: Complete rewrite of theming system, see new book chapter for details
1551
1552
* themes: direct access to plot options via $ is now disabled
1553
1554
Improved documentation and error messages
1555
1556
* facet_grid: documentation improved
1557
1558
* qplot: Better error messages when needed variables are missing
1559
1560
* scale_discrete: improved error message for too many values in domain
1561
1562
* scale_size: improved documentation for discrete variables
1563
1564
* online documentation generally tweaked and primped to work a little better
1565
and look a little nicer
1566
1567
* website now includes a search box
1568
1569
* links from rdoc now point to correct pages
1570
1571
1572
ggplot2 0.6
1573
----------------------------------------------------------------
1574
1575
The two big changes in this release are improved documentation and legends.
1576
1577
* all major ggplot2 components now have their own built in documentation, so
1578
that (e.g.) ?stat_smooth or ?geom_point now give you useful information
1579
1580
* the legend code is now considerably more sophisticated and will attempt to
1581
merge together legends for the same variable
1582
1583
* also, legends are drawn based on the geoms used (instead of the scales
1584
used, as previously) so should match the plot much better (e.g. for
1585
geom_smooth, geom_boxplot, geom_vline, geom_abline, geom_pointrange).
1586
1587
These features are new, so there are likely to be a few bugs that I haven't discovered. Please me know if you discover any.
1589
Other additions and corrections
1590
1591
* coord_equal: should now work correctly in all situations
1592
1593
* coord_polar: add start and direction parameters, giving more control over
1594
the layout of the polar coords
1595
1596
* coord_polar: added my favourite pie chart example
1597
1598
* coord_trans now deals with groups appropriately, at the cost of decreased
1599
speed
1600
1601
* geom_abline, geom_vline, geom_hline: should now behave better in a wider
1602
variety of settings
1603
1604
* geom_boxplot: deals with continuous x-axis and grouping much better
1605
1606
* geom_boxplot: now has it's own legend which actually looks like a boxplot
1607
1608
* geom_boxplot: reports if missing values removed
1609
1610
* geom_crossbar: the middle line is now display thicker than the other lines,
1611
controlled by the parameter fatten (thanks to Heike Hofmann for the
1612
suggestion)
1613
1614
* geom_density: fix scale adjustment bug in geom_density
1615
1616
* geom_line, geom_text: all size measurements (now lines and text as well) are
1617
measured in mm, lines/paths default to paths 0.5mm wide
1618
1619
* geom_rug: new to add marginal rug plots
1620
1621
* geom_smooth: added example showing how to use geom_smooth with your own
1622
models
1623
1624
* geom_smooth: fixed bug where if se=FALSE x axis always includes 0
1625
1626
* geom_vline, geom_hline: yet another rewrite which should make them more
1627
powerful and less error prone.
1628
1629
* ggsave reports width and height of saved image
1630
1631
* position_stack: fixed bug when data was empty
1632
1633
* qplot: allow qplot to use computed aesthetics too
1634
1635
* scale_continuous: tweaks to minor breaks to make appearance better on wider
1636
range of coordinate systems
1637
1638
* scale_discrete: all discrete scales now have labels argument which you can
1639
use to override the factor levels
1640
1641
* scale_discrete: now works correctly with character vectors
1642
1643
* scale_size: changed default range to [0.5, 3] to better reflect new sizing
1644
decisions
1645
1646
* scale_size: legends resize to avoid overlaps
1647
1648
* scale_x_continuous, scale_y_continuous: new convenience functions xlim and
1649
ylim (and zlim) that make it even easier to adjust the limits of the x, y,
1650
and z axes
1651
1652
* stat_bin, geom_area: fixed bug in combination of stat_bin and geom_area that
1653
made it difficult to draw frequency polygons
1654
1655
* stat_bin: fixed bug which resulted in increased counts when the x axis was a
1656
categorical variable with a single level (thanks to Bob Muenchen for
1657
pointing this out!)
1658
1659
* stat_bin: no longer incorrectly warns that binwidth is unspecified when
1660
breaks are set
1661
1662
* stat_bin: now takes origin argument to manually specify origin of first bin
1663
(default is round_any(min(range), bin_width, floor))
1664
1665
* stat_boxplot, stat_contour, stat_density_2d, stat_qq, stat_density: na.rm
1666
parameter added to the following statistics (thanks to Leena Choi for
1667
suggesting this)
1668
1669
* stat_function: new, makes it easy to superimpose a function on the plot
1670
1671
* stat_qq: axes flipped to agree with base R
1672
1673
* stat_qq: now uses sample aesthetic to select variable for summary
1674
1675
* stat_quantile: updated to work with latest version of quantreg
1676
1677
* stat_spoke: new, to make it possible to use geom_segment parameterised by
1678
angle and radius (thanks to Jiho for the suggestion)
1679
1680
* stat_summary: better documentation
1681
1682
* stat_summary: convenient auto wrapping of simple summary functions
1683
1684
Miscellaneous changes:
1685
1686
* it's now easy to change the default scales (and their arguments) with the
1687
set_default_scale function, see ?set_default_scale for more details (thanks
1688
to Bob Muenchen for the suggestion)
1689
1690
* new order aesthetic which controls the order in which elements are plotted
1691
1692
* min and max are now scaled the same way as y
1693
1694
* functions are silently dropped (e.g. aes(colour=col))
1695
1696
* scales do not try and map variables that don't exist (fixes some rather
1697
obscure bugs)
1698
1699
* aes(mpg, wt) is now equivalent to aes(x = mpg, y = wt)
1700
1701
1702
ggplot2 0.5.7
1703
----------------------------------------------------------------
1704
1705
New geoms, scales and aesthetics
1706
1707
* stat_step and geom_step to draw staircase plots (like plot(type="s"))
1708
1709
* order aesthetic (currently only for lines/paths) allows you to control the
1710
drawing order within a group
1711
1712
* scale_manual makes it easier to let ggplot uses the exact
1713
colours/sizes/linetypes that you want
1714
1715
* scale_reverse allows you to reverse the scale of x and y axes
1716
1717
* scale_grey is a new black and white scale for categorical data (colour and
1718
fill)
1719
1720
1721
Improved options handling
1722
1723
* new function opts() to allow modification of plot options by addition
1724
1725
* update(p, theme_bw) and p + theme_bw now work
1726
1727
These changes mean that you can modify plot options in the same way that you modify all other aspects of the plot, e.g. qplot(mpg, wt, data=mptcars) + opts(title = "Fuel economy vs weight")
1728
1729
Improved documentation
1730
1731
* many tweaks to the online documentation, particular including the actual
1732
code you need to run for each object!
1733
1734
* every page now has a link to a form where you can submit feedback on exactly
1735
you do or don't like about a page
1736
1737
* required aesthetics now listed in documentation
1738
1739
* geom_polygon now has a decent example
1740
1741
* numerous minor corrections suggested by Jörg Beyer
1742
1743
* separated plotting advice from details of plot construction (what vs how),
1744
thanks to Bert Gunter for this suggestion
1745
1746
1747
Improved map projections (with coord_map)
1748
1749
* coord_map defaults to orientation = c(90, 0, mean(range(y))) - this ensures
1750
that multiple layers line up correctly, but means you will have to specify
1751
the orientation yourself for many projections
1752
1753
* coord_map now respects limits set by scales
1754
1755
* removed useless ticks from coord_map
1756
1757
If you're using ggplot to draw maps and have thought of other features that would make your life easier, please let me know.
1758
1759
1760
Bug fixes
1761
1762
* adding data and aesthetics in separate steps should now work
1763
1764
* layers with set parameters will not use mapped aesthetics
1765
1766
* use LazyLoad: false instead of SaveData: true for better future
1767
compatability
1768
1769
* coord_cartesian: fixed bug that prevented you from overriding the default
1770
axis expansion
1771
1772
* coord_equal: now scales correctly if ratio < 1
1773
1774
* geom_abline: fix bug where slope was ignored
1775
1776
* geom_jitter now works correctly with groups and categorical values (was
1777
actually a bug in how scale_discrete deals with continuous values)
1778
1779
* geom_path: automatically switch between polylineGrob and segmentsGrob when
1780
drawing paths so that setting line type now works properly
1781
1782
* geom_segment now uses both ends of segments to calculate axis limits
1783
1784
* plotmatrix: fix bug in scatterplot matrix where all scatterplots were
1785
transposed!
1786
1787
* qplot: should now work better within functions
1788
1789
* quickplot added as an alias of qplot, to avoid confusion with qunif, etc
1790
1791
* scale_*: better error message if you add a scale without a matching
1792
aesthetic mapping in the plot
1793
1794
* scale_identity no longer converts everything to character
1795
1796
* scale_identity: grob argument renamed to guide
1797
1798
* stat_*: made all statistics more robust to errors
1799
1800
* stat_quantile: fixed bug when only drawing a single quantile
1801
1802
* stat_smooth: returns silently if <2 non-missing data points
1803
1804
1805
Minor aesthetic improvements
1806
1807
* coord_polar now specifies aspect.ratio by default, and I've made a few other
1808
tweaks to make polar coordinates plot look nicer
1809
1810
* geom_bar no longer draws gray borders by default, but instead uses the same
1811
colour as fill (this eliminates a tiny gap between neighbouring bars)
1812
1813
* plotmatrix: tweaks to improve display of scatterplot matrix
1814
1815
* scale_brewer: added option to reverse palette
1816
1817
* scale_colour: colour and fill legends now look exactly the same (previously
1818
colour was missing a grey border)
1819
1820
* scale_discrete has slightly larger expansion (0.75 vs 0.5)
1821
1822
* stat_bar: only output bars with > 0 count
1823
1824
1825
ggplot2 0.5.6
1826
----------------------------------------------------------------
1827
1828
Improved error messages and other notifications:
1829
1830
* all geoms and position adjustments should now give an informative error
1831
message when required aesthetics are missing
1832
1833
* better error messages if data not a data frame, or mapping not created by
1834
aes or aes_string
1835
1836
* better errors for qplot when variables missing or data invalid
1837
1838
* better error if somehow you are missing necessary scales
1839
1840
* stat_bin informs you of the default choice of binwidth
1841
1842
* stat_smooth gives helpful error messages for common problems
1843
1844
* printing a geom now displays the data set that it uses (if not the default)
1845
1846
Other improvements:
1847
1848
* colour and fill legends now surround by background plot colour
1849
1850
* can now draw arrow heads with geom_segment, and have added an example
1851
demonstrating drawing a vector field
1852
1853
* density plots should always include 0 on y axis
1854
1855
* default boxplot outlier changed colour to black
1856
1857
* stat_smooth supports categorical variables a little better
1858
1859
* implemented hash methods for all ggplot objects. This is the first step in
1860
making it easier for me to compare all examples between versions for quality
1861
control purposes
1862
1863
New data:
1865
* seals, contributed by David Brillinger and Charlotte Wickham, used for
1866
vector field example
1867
1868
Bug fixes:
1869
1870
* geoms hline, vline and abline now all work correctly when a grouping variable is used
1871
1872
* block histograms (where individuals are identifiable) now work correctly
1873
1874
* all ggplot objects should now print properly from the command line
1875
1876
* fixed bug in geom_path when only 1 point
1877
1878
* segments geom now works correctly for more coordinate systems
1879
1880
* order variables in scatterplot matrix by order of variables in data.frame
1881
1882
* geom_density deals with missing values correctly when displaying scaled densities
1883
1884
* fixed bug in calculating categorical ranges
1885
1886
* fixed bug in drawing error bars
1887
1888
Subtractions
1889
1890
* now relies on R 2.6
1891
1892
* removed grid.gedit and grid.gremove, and code replaced by grid.ls
1893
1894
ggplot2 0.5.5
1895
----------------------------------------------------------------
1896
1897
Improvements:
1898
1899
* ggplot now gives rather more helpful errors if you have misspecified a
1900
variable name in the aesthetic mapping
1901
1902
* changed default hline and vline intercepts to 0
1903
1904
* added "count" output variable from stat_density for creating
1905
stacked/conditional density plots
1906
1907
* added parameters to geom_boxplot to control appearance of outlying points
1908
1909
* overriding aesthetics with fixed values that have already been set with
1910
aesthetics now actually works
1911
1912
* slightly better names for xaxis and yaxis grobs
1913
1914
* added aes_string function to make it easier to construction aesthetic
1915
mapping specifications in functions
1916
1917
* continuous scales now have labels argument so that you can manually specify
1918
labels if desired
1919
1920
* stat_density now calculates densities on a common grid across groups. This
1921
means that position_fill and position_stack now work properly
1922
1923
* if numeric, legend labels right aligned
1924
1925
* polar coordinates much improved, and with better examples
1926
1927
Documentation:
1928
1929
* fixed argument documentation for qplot
1930
1931
* added (very) rudimentary documentation about what functions return
1932
1933
* documentation now lists extra variables created by statistics
1934
1935
Bug fixes:
1936
1937
* coord_flip now works with segment and all interval geoms
1938
1939
* geom_errorbar now works in all coordinate systems
1940
1941
* derived y axes (eg. on histogram) are now labelled correctly
1942
1943
* fixed bug in stat_quantile caused by new output format from predict.rq
1944
1945
* fixed bug if x or y are constant
1946
1947
* fixed bug in histogram where sometimes lowest bar was omitted
1948
1949
* fixed bug in stat_qq which prevent setting aesthetics
1950
1951
* fixed bug in qplot(..., geom="density", position="identity")
1952
1953
* fixed stat_qq so that unnecessary arguments are no longer passed to the
1954
distribution function
1955
1956
Subtractions:
1958
* removed grid argument from ggsave, replaced by ggtheme(theme_bw)
1959
1960
* removed add argument from qplot
1961
1962
1963
ggplot2 0.5.4
1964
----------------------------------------------------------------
1965
1966
* border now drawn on top of geoms, instead of below - this results in better
1967
appearance when adjusting scale limits
1968
1969
* ggplot() + aes() now modifies existing default aesthetic mapping, rather
1970
than overwriting
1971
1972
* polish examples in facet_grid
1973
1974
ggplot2 0.5.3
1975
----------------------------------------------------------------
1976
1977
* added experimental scatterplot matrix, see ?plotmatrix
1978
1979
* added new border.colour and grid.minor.colour options for better control
1980
over plot apperance
1981
1982
* updated theme_bw to do better when drawing a plot with white background
1983
1984
* better default colour choices for gradients (and more discussion in examples)
1985
1986
* fixed bug in ScaleGradient2 where scales with different positive and
1987
negative ranges were not scaled correctly
1988
1989
* allow expressions as result from strip.text
1990
1991
* fixed rare bug in geom_vline and geom_hline
1992
1993
* fixed example in geom_abline
1994
1995
* tweaked display of multiline axis labels
1996
1997
ggplot2 0.5.2
1998
----------------------------------------------------------------
1999
2000
* add argument to position dodge so it's now possible to accurately dodge things with different widths to their physical widths
2001
2002
* added median summary
2003
2004
New examples:
2005
2006
* logistic regression example in stat_smooth
2007
2008
Bugs fixed:
2009
2010
* evaluation of arguments to layer is no longer delayed
2011
2012
* can use categorical xseq with stat_smooth
2013
2014
* x and y axes named incorrectly (thanks to Dieter Menne for spotting this)
2015
2016
* can now pass position objects to qplot
2017
2018
* y jitter calculated correctly, and jittered data rescales axis now
2019
2020
* removed silly legend from quantile plot
2021
2022
* extra arguments not being passed on to geoms/stats
2023
2024
* fixed bug in stat_summary when summarising a factor
2025
2026
* fixed bugs in stat_summary, geom_ribbon, and coord_trans examples
2027
2028
ggplot2 0.5.1
2029
----------------------------------------------------------------
2030
2031
* renamed scale_manual to scale_identity to map position_identity and
2032
stat_identity
2033
2034
* ensured all grob consistently named
2035
2036
* renamed aesthetics argument to mapping to be consistent with description in
2037
book
2038
2039
* added useful utilities for modifying grobs
2040
2041
* bug fixes to x axis range with interval geoms
2042
2043
* added ability to turn legend off for single scale (currently undocumented)
2044
2045
* added economics data set and matching examples
2046
2047
ggplot2 0.5
2048
----------------------------------------------------------------
2049
2050
* complete rewrite of ggplot code base
2051
2052
* id/grouping completely rewritten so that automatically grouped when any of
2053
the aesthetics is a categorical variable.This behaviour is defined in the
2054
Grammar of Graphics, and makes things like qplot(wt, data=mtcars,
2055
geom="density", colour=factor(cyl)) work nicely