使用quantmod chartSeries绘制R中的日内OHLC数据时出现的问题

使用quantmod chartSeries绘制R中的日内OHLC数据时出现的问题,r,plot,quantmod,R,Plot,Quantmod,我有一个xts/zoo对象ESZ1: > class(ESZ1) [1] "xts" "zoo" 与 及 我想使用quantmod包中的chartSeries函数来绘制它。但是,我得到以下错误: > chartSeries(ESZ1) Error in if (on == "years") { : missing value where TRUE/FALSE needed 任何关于问题的想法都将不胜感激 补充问题: 是否有关于如何调整chartSeries()的轴/边距的文档?

我有一个xts/zoo对象ESZ1:

> class(ESZ1) 
[1] "xts" "zoo"

我想使用quantmod包中的chartSeries函数来绘制它。但是,我得到以下错误:

> chartSeries(ESZ1)
Error in if (on == "years") { : missing value where TRUE/FALSE needed
任何关于问题的想法都将不胜感激

补充问题: 是否有关于如何调整chartSeries()的轴/边距的文档?当前,我的y轴标签在绘图的右侧边缘部分被切断。我试过使用

mar = ...

在chartSeries的参数列表中,但这并没有更改生成的绘图。

您没有提供有关
ESZ1
对象的足够信息,但我可以通过尝试绘图2分钟或更少的数据来重现错误。你的列名看起来像是来自IBrokers的,所以

> library(IBrokers)
> library(quantmod)
> ibg <- ibgConnect()
> fut <- twsFUT('ES', 'GLOBEX', '201112')
> ESZ1 <- reqHistoricalData(ibg, fut, barSize='1 secs', duration='120 S')
TWS Message: 2 -1 2104 Market data farm connection is OK:usfuture 
TWS Message: 2 -1 2106 HMDS data farm connection is OK:ushmds2a 
waiting for TWS reply on ES .... done.
> chartSeries(ESZ1)
Error in if (on == "years") { : missing value where TRUE/FALSE needed
>库(IBrokers)
>图书馆(quantmod)
>ibg fut ESZ1图表系列(ESZ1)
if(on==“years”)中出错:{:缺少需要TRUE/FALSE的值
如果您使用的数据超过2分钟,它就会工作

> ESZ1 <- reqHistoricalData(ibg, fut, barSize='1 secs', duration='121 S')
waiting for TWS reply on ES .... done.
> chartSeries(ESZ1)

> indexClass(ESZ1)
[1] "POSIXct" "POSIXt" 
> colnames(ESZ1)
[1] "ESZ1.Open"    "ESZ1.High"    "ESZ1.Low"     "ESZ1.Close"   "ESZ1.Volume" 
[6] "ESZ1.WAP"     "ESZ1.hasGaps" "ESZ1.Count"  
>ESZ1图表系列(ESZ1)
>indexClass(ESZ1)
[1] POSIXct“POSIXt”
>colnames(ESZ1)
[1] “ESZ1.打开”“ESZ1.高”“ESZ1.低”“ESZ1.关闭”“ESZ1.音量”
[6] “ESZ1.WAP”“ESZ1.hasGaps”“ESZ1.Count”

您没有提供足够的有关
ESZ1
对象的信息,但我可以通过尝试绘制2分钟或更少的数据来重现错误。您的列名看起来像来自IBrokers的内容,因此

> library(IBrokers)
> library(quantmod)
> ibg <- ibgConnect()
> fut <- twsFUT('ES', 'GLOBEX', '201112')
> ESZ1 <- reqHistoricalData(ibg, fut, barSize='1 secs', duration='120 S')
TWS Message: 2 -1 2104 Market data farm connection is OK:usfuture 
TWS Message: 2 -1 2106 HMDS data farm connection is OK:ushmds2a 
waiting for TWS reply on ES .... done.
> chartSeries(ESZ1)
Error in if (on == "years") { : missing value where TRUE/FALSE needed
>库(IBrokers)
>图书馆(quantmod)
>ibg fut ESZ1图表系列(ESZ1)
if(on==“years”)中出错:{:缺少需要TRUE/FALSE的值
如果您使用的数据超过2分钟,它就会工作

> ESZ1 <- reqHistoricalData(ibg, fut, barSize='1 secs', duration='121 S')
waiting for TWS reply on ES .... done.
> chartSeries(ESZ1)

> indexClass(ESZ1)
[1] "POSIXct" "POSIXt" 
> colnames(ESZ1)
[1] "ESZ1.Open"    "ESZ1.High"    "ESZ1.Low"     "ESZ1.Close"   "ESZ1.Volume" 
[6] "ESZ1.WAP"     "ESZ1.hasGaps" "ESZ1.Count"  
>ESZ1图表系列(ESZ1)
>indexClass(ESZ1)
[1] POSIXct“POSIXt”
>colnames(ESZ1)
[1] “ESZ1.打开”“ESZ1.高”“ESZ1.低”“ESZ1.关闭”“ESZ1.音量”
[6] “ESZ1.WAP”“ESZ1.hasGaps”“ESZ1.Count”

这个问题在chartSeries中,特别是axTicksByTime调用。我将添加一个补丁来解决这个问题,但现在您可以执行以下操作:

chartSeries(ESZ1, major.ticks="minutes")

默认情况下,major.ticks=“auto”在自动过程中似乎过早失败,无法找到正确答案。

问题在chartSeries中,特别是axTicksByTime调用中。我将添加一个修补程序来修复此问题,但现在您可以执行以下操作:

chartSeries(ESZ1, major.ticks="minutes")

默认情况下,major.ticks=“自动”在自动过程中,它似乎过早地失败,无法得到正确的答案。

请提供一个。对此表示抱歉-请参阅下面的评论。请提供一个。对此表示抱歉-请参阅下面的评论。我很抱歉没有提供一个可复制的示例,但是的,您正确地收集到我使用IBrokers导入数据。是的,我没有正在尝试仅绘制由1秒条形图组成的1分钟数据。这不可能吗?我将尝试查看它是否适用于超过2分钟的数据。对于没有提供可复制的示例,我深表歉意,但是,是的,您正确地收集到我使用IBrokers导入数据。是的,我尝试仅绘制1分钟的数据一致性1秒条的ng。这不可能吗?我将尝试看看它是否适用于超过2分钟的数据。感谢它对我有效。请注意,现在是2013年3月,我使用的是最新版本。可能问题的根源不同?我有每日数据,但主要。ticks=“minutes”帮助,尽管没有分钟数据。我没有相同数据集的截断版本的问题。感谢这对我有用。请注意,现在是2013年3月,我使用的是最新版本。可能我的问题的根源不同?我有每日数据,但主要。ticks=“分钟”尽管没有分钟数据,但这很有帮助。对于同一数据集的截断版本,我没有问题。