scales functions now work as expected when it is used inside a for loop. In previous package versions if a scales function was used with variable custom parameters inside a for loop, some of the parameters were not evaluated until the end of the loop, due to how R lazy evaluation works (@zeehio, #81).
Switched from reference classes to R6 (#96).
scale_continuous() uses a more correct check for numeric values.
NaN is correctly recognised as a missing value by the gradient palettes (ggplot2-1482).
dollar_format() is now more flexible and can add either prefixes or suffixes for different currencies (#53). It gains a
negative_parens argument to show negative values as
($100) and now passes missing values through unchanged (@dougmitarotonda, #40).
to_time(), but that function was moved into a function so it was no longer available in the scales namespace. Now
floor_time() has its own copy of that function (Thanks to Stefan Novak).
zero_range() has improved behaviour thanks to Brian Diggs.
time_trans() gains an optional argument
tz to specify the time zone to use for the times. If not specified, it will be guess from the first input with a non-null time zone.
fixed namespace problem with
train_continuous() so zero-row or all infinite data frames don’t potentially cause problems.
check for zero-length colour in
log_breaks() always gives breaks evenly spaced on the log scale, never evenly spaced on the data scale. This will result in really bad breaks for some ranges (e.g 0.5-0.6), but you probably shouldn’t be using log scales in that situation anyway.
bounds functions now
force evaluation of range to avoid bug with S3 method dispatch inside primitive functions (e.g.
Simplified algorithm for
discrete_range() that is robust to
stringsAsFactors global option. Now, the order of a factor will only be preserved if the full factor is the first object seen, and all subsequent inputs are subsets of the levels of the original factor.