问题
On one machine, plot.xts correctly displays data in two columns:
On another, things look very different:
The code for both is the same:
library(zoo)
library(xts)
library(xtsExtra)
sessionInfo()
timezone = "UTC"
Sys.setenv(TZ=timezone)
sampleData = "Time (UTC),CPU,Runqueue,Blocked,MemoryFree,PageIns,ContextSwitches,Wait,Steal
2014-10-15 16:12:11,20,0,0,12222172,0,2549,0,0
2014-10-15 16:12:12,27,1,0,12220732,0,3619,0,0
2014-10-15 16:12:13,30,0,0,12220212,0,2316,0,0"
data = as.xts(read.zoo(text=sampleData, format="%Y-%m-%d %H:%M:%S", header=TRUE, sep=",", tz=timezone))
plot.xts(data, main="Title", minor.ticks=FALSE, yax.loc="left", auto.grid=TRUE, nc=2)
The output of the successful machine:
> library(zoo)
Attaching package: ‘zoo’
The following objects are masked from ‘package:base’:
as.Date, as.Date.numeric
> library(xts)
> library(xtsExtra)
Attaching package: ‘xtsExtra’
The following object is masked from ‘package:xts’:
plot.xts
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-redhat-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] xtsExtra_0.0-1 xts_0.9-7 zoo_1.7-11
loaded via a namespace (and not attached):
[1] grid_3.1.2 lattice_0.20-29
... The rest are just commands, no warnings/errors...
The output of the failing machine:
> library(zoo)
Attaching package: 'zoo'
The following objects are masked from 'package:base':
as.Date, as.Date.numeric
> library(xts)
> library(xtsExtra)
Attaching package: 'xtsExtra'
The following object is masked from 'package:xts':
plot.xts
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-redhat-linux-gnu (64-bit)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] xtsExtra_0.0-1 xts_0.9-7 zoo_1.7-11
loaded via a namespace (and not attached):
[1] grid_3.1.2 lattice_0.20-29
... The rest are just commands, no warnings/errors...
The successful machine is local and the failing machine is remote with export DISPLAY=${IP}:0 to the successful machine.
Why does R xts plot only show a single column with nc=2?
回答1:
I was able to reproduce the different results using your script on the same machine - but using different versions of xtsExtra. The bad news is that the new version is giving the wrong result. This may be related to refactoring of xtsExtra/R/plot.R at r-forge.
Is it possible the package was installed more recently on the "failing machine"?
回答2:
As bergant mentioned in https://stackoverflow.com/a/28571442/1293660, this is a bug in xtsExtra. After a binary search, revision #850 is the latest version that works:
$ svn checkout --revision 850 svn://svn.r-forge.r-project.org/svnroot/xts/
$ R
> install.packages("xts/pkg/xts", repos=NULL, type="source")
> install.packages("xts/pkg/xtsExtra", repos=NULL, type="source")
回答3:
plot.xts(data, main="Title", minor.ticks=FALSE, yax.loc="left", auto.grid=TRUE, nc=2)
see ?xts::plot.xts and you will note that there are not arguments for yax.loc or nc. The plot.xts code was refactored this past summer and now the development of plot.xts is happening in the xts package.
Install xts rev 875 from R-Forge and try the following, this worked for me.
plot.xts(data, main="Title", multi.panel=TRUE, minor.ticks=FALSE, yax.right=FALSE)
来源:https://stackoverflow.com/questions/28570289/why-does-r-xts-plot-only-show-a-single-column-with-nc-2