鼠标悬停时的 dygraph 自定义标签失败
dygraph custom labeling on mouseover fails
我正在尝试根据 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(???)
}
}
}
})
接收日期和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
希望对您有所帮助。必须说它需要 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
用于处理坐标轴的详细信息。
其中,可以直接将Javascript与axisLabelFormatter
和valueFormatter
相关的代码作为字符串传递。
第二个问题的解决方案:
关于第二个问题,你可以试试这个代码:
## 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];
}'))
输出:
我正在尝试根据 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(???)
}
}
}
})
接收日期和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
希望对您有所帮助。必须说它需要 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
用于处理坐标轴的详细信息。
其中,可以直接将Javascript与axisLabelFormatter
和valueFormatter
相关的代码作为字符串传递。
第二个问题的解决方案:
关于第二个问题,你可以试试这个代码:
## 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];
}'))
输出: