CRAN release 0.12.2
Changes to plotting functionality
-
You can now omit the data time range from the upper-right portion of a plot by setting
main.timespan = FALSE
. (#247) -
Fix
addEventLines()
when plotted objects have a 'yearmon' index. The ISO-8601 range string was not created correctly. Thanks to @paessens for the report. (#353) -
Make
ylim
robust against numerical precision issues by replacing==
withall.equal()
. Thanks to @bollard for the report, PR, and a ton of help debugging intermediate solutions! (#368) -
Series added to a panel now extend the panel's y-axis. Previously the y-axis limits were based on the first series' values and not updated when new series were added. So values of the new series did not appear on the plot if they were outside of the original series' min/max. Thanks to Vitalie Spinu for the report and help debugging and testing! (#360)
-
All series added to any panel of a plot now update the x-axis of all panels. So the entire plot's x-axis will include every series' time index values within the original plot's time range. This behavior is consistent with
chart_Series()
. Thanks to Vitalie Spinu for the report and help debugging and testing! (#360, #216) -
All y-values are now plotted for series that have duplicate index values, but different data values. Thanks to Vitalie Spinu for the report and help debugging and testing! (#360)
-
Adding a series can now extend the x-axis before/after the plot's existing time index range, so all of the new series' time index values are included in the plot. This is FALSE by default to maintain backward compatibility. Thanks to Vitalie Spinu for the report and help debugging and testing! (#360)
-
plot.xts()
now has ayaxis.ticks
argument to control the number of y-axis grid lines, instead of always drawing 5 grid lines. Thanks to Fredrik Wartenberg for the feature request and patch! (#374)
Other changes
-
Ops.xts()
no longer changes column names (viamake.names()
) when the two objects do not have identical indexes. This makes it consistent withOps.zoo()
. (#114) -
Subsetting a zero-length xts object now returns an object with the same storage type as the input. It previously always returned a 'logical' xts object. (#376)
-
tclass()
andtzone()
now return the correct values for zero-length xts objects, instead of the defaults in the.xts()
constructor. Thanks to Andre Mikulec for the report and suggested patch! (#255) -
first()
andlast()
now return a zero-length xts object whenn = 0
. They previously returned the entire object. This is consistent with the defaulthead()
andtail()
functions, and data.table'sfirst()
andlast()
functions. Thanks to Ethan B. Smith for the report and patch! (#350) -
Subsetting a zero-width xts now returns an object with the same class, tclass, tzone, and xtsAttributes as the input. Thanks to @shikokuchuo for the report! (#359)
-
endpoints()
now always returns last observation. Thanks to GitHub user Eluvias for the report. (#300) -
Ensure
endpoints()
errors for every 'on' value whenk < 1
. It was not throwing an error fork < 1
foron
of "years", "quarters", or "months". Thanks to Eluvias for the report. (#301) -
Fix
window()
for yearmon and yearqtr indexes. In xts < 0.11-0,window.zoo()
was dispatched whenwindow()
was called on a xts object because there was nowindow.xts()
method.window.zoo()
supports additional types of values for thestart
argument, and possibly other features. So this fixes a breaking change in xts >= 0.11-0. Thanks to @annaymj for the report. (#312) -
Clarify whether
axTicksByTime()
returns index timestamps or locations (e.g. 1, 2, 3). Thanks to @ggrothendieck for the suggestion and feedback. (#354) -
Fix merge on complex types when 'fill' is needed.
merge()
would throw an error because it treated 'fill' as double instead of complex. Thanks to @ggrothendieck for the report. (#346) -
Add a message to tell the user how to disable 'xts_check_TZ' warning. Thanks to Jerzy Pawlowski for the nudge. (#113)
-
Update
rbind()
to handle xts objects without dim attribute.rbind()
threw an obscure error if one of the xts objects does not have a dim attribute. We can handle this case even though all xts objects should always have a dim attribute. (#361) -
split.xts()
now always return a named list, which makes it consistent withsplit.zoo()
. Thanks to Gabor Grothendieck for the report. (#357) -
xts objects with a zero-length POSIXct index now return a zero-length POSIXct vector instead of a zero-length integer vector. Thanks to Jasper Schelfhout for the report and PR! (#363, #364)
-
Add suffixes to output of
merge.xts()
. The suffixes are consistent withmerge.default()
and notmerge.zoo()
, becausemerge.zoo()
automatically uses "." as a separator between column names, but the default method doesn't. Thanks to Pierre Lamarche for the nudge. Better late than never? (#38, #371)