鼠标悬停时的dygraph自定义标签失败

时间:2016-05-22 21:07:31

标签: r graph dygraphs

我正在尝试根据x轴上的鼠标悬停点将图表顶部的文本设置为自定义值。我以为我正确地跟踪了dygraph网站上的example。有人可以使用下面的例子解释如何正确地做到这一点吗?

错误:

Error in dygraph(df, { : object 'axes' not found

我的代码:

library(quantmod)
data<-getSymbols("USD/EUR",src="oanda",env=NULL)
df<-as.data.frame(data)

df2<-data.frame(row.names(df))
df2$output<-sample(0:10,length(row.names(df)),replace=T)

library(dygraphs)
#dygraph(df)

dygraph(df, {
    axes:{
        x:{
            valueFormatter: function(dte){
                #how to return df2$output with the same date as the date from df that just got passed in? 
                return(???)
            }
        }   
    }   
})

函数接受日期并返回正确的字符串作为标签(在R中):

#pass in date to this function
retString<-function(dateFromDygraph){
 #returns the data
} #I can write this, I just dont know how to use it in the dygraph code you wrote

1 个答案:

答案 0 :(得分:3)

我希望这对你有所帮助。必须说它需要R和JavaScript的知识。

首先,回答你的第一个问题。就语法而言,R和JavaScript之间存在很大差异。

您提到的代码是JavaScript代码。我在说这个:

{
    axes:{
        x:{
            valueFormatter: function(dte){
            #how to return df2$output with the same date as the date from df that just got passed in? 
                return(???)
            }
        }   
    }   
}

此代码不能直接在R中使用。这就是您收到错误的原因。

解决第一个问题:

如果您对dygraphs包进行一些搜索工作,您会发现一个函数dyAxis,用于操作轴细节。

在此,您可以直接将与axisLabelFormattervalueFormatter相关的Javascript代码作为字符串传递。

解决您的第二个问题:

就第二个问题而言,您可以尝试使用此代码:

## 1:nrow(df) is column binded for a reason. Later, it will be used for finding the Date and the Output to be selected
g <- dygraph(data.frame(1:nrow(df),df$USD.EUR))

## Create the JavaScript Array for Date and Output and access it using the index specified earlier
dyAxis(g,'x',axisLabelFormatter = paste0('function(x){
    var dates = [',paste(paste0("'",df2[['row.names.df.']],"'"),collapse=','),'];

    return dates[x - 1];
}'),valueFormatter = paste0('function(x){
    var out = [',paste(df2$output,collapse=','),'];

    return out[x - 1];
}'))

<强>输出:

enter image description here