Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
highchart中的注释不';I don’我没有按预期工作_R_Date_Highcharts_Xts - Fatal编程技术网

highchart中的注释不';I don’我没有按预期工作

highchart中的注释不';I don’我没有按预期工作,r,date,highcharts,xts,R,Date,Highcharts,Xts,我正在使用高图绘制一些时间序列,并想在图中添加一些注释以突出一些关键点。我知道将光标放在图形上可以弹出上下文,但是,需要一些自动图形生成,因此注释是最好的方法 我做到了,代码的最后一行。然而,效果并不是我所期望的。文本位于左下角,不位于右侧水平位置,但垂直位置位于右侧。时间序列是使用xts库创建的,这意味着横轴只是日期数据结构,没有什么特别之处。xValue被指定为总长度为1018的所有时间点的第900个元素,因此第900个时间点必须位于图形的后半部分 有人知道如何将注释放置在正确的位置吗?非常

我正在使用高图绘制一些时间序列,并想在图中添加一些注释以突出一些关键点。我知道将光标放在图形上可以弹出上下文,但是,需要一些自动图形生成,因此注释是最好的方法

我做到了,代码的最后一行。然而,效果并不是我所期望的。文本位于左下角,不位于右侧水平位置,但垂直位置位于右侧。时间序列是使用xts库创建的,这意味着横轴只是日期数据结构,没有什么特别之处。xValue被指定为总长度为1018的所有时间点的第900个元素,因此第900个时间点必须位于图形的后半部分

有人知道如何将注释放置在正确的位置吗?非常感谢

hc <- highchart(type = "stock") %>% 
  hc_title(text = "Some time series") %>% 
  hc_add_series(x, color='green', name="x", showInLegend = TRUE) %>%
  hc_add_series(y, color='red', name="y", showInLegend = TRUE) %>% 
  hc_add_series(z, color='blue', name="z", showInLegend = TRUE) %>% 
  hc_navigator(enabled=FALSE) %>% 
  hc_scrollbar(enabled=FALSE) %>%
  hc_legend(enabled=TRUE, layout="horizontal") %>%
  hc_annotations(list(enabledButtons=FALSE, xValue = index(x)[900], yValue = -5, title =list(text = "Hello world! How can I make this work!")))

hc
hc%
hc_标题(text=“某些时间序列”)%%>%
hc_添加_系列(x,color='green',name='x',showInLegend=TRUE)%>%
hc_添加_系列(y,color='red',name='y',showInLegend=TRUE)%>%
hc_添加_系列(z,color='blue',name='z',showInLegend=TRUE)%>%
hc\U导航器(启用=错误)%>%
hc_滚动条(启用=错误)%>%
hc_图例(启用=真,布局=水平”)%>%
hc_注释(列表(enabledButtons=FALSE,xValue=index(x)[900],yValue=-5,title=list(text=“Hello world!我如何才能让它工作!”)
hc
可以使用以下脚本大致生成数据:

dt <- seq(as.Date("2014/1/30"), as.Date("2018/2/6"), "days")
dt <- dt[!weekdays(dt) %in% c("Saturday", "Sunday")]
n <- length(dt)
x <- xts(rnorm(n), order.by=dt)
y <- xts(rnorm(n), order.by=dt)
z <- xts(rnorm(n), order.by=dt)

dt让我们以@kamil kulig为例,这将有点脱离R世界,但如果您不介意的话,我想给出一些理由

如果我们看到注释选项不是一个对象而是一个对象列表,那么在highcharter中实现了
hc\u add\u annotation
功能

现在,您正在使用highcharter的旧版本。Highcharter开发版本正在使用highchartsJS的v6版本,该版本做了一些更改:在annotations.js之前是一个插件,现在作为一个模块包含,在参数名称上做了一些更改

例一:简单 Kamil Kulig的例子如下:

highchart(type = "stock") %>% 
  hc_add_annotation(
    labelOptions = list(
      backgroundColor = 'rgba(255,255,255,0.5)',
      verticalAlign = 'top',
      y = 15
    ),
    labels = list(
      list(
        point = list(
          xAxis = 0,
          yAxis = 0,
          x = datetime_to_timestamp(as.Date("2017/01/02")),
          y = 1.5
        ),
        text = "Some annotation"
      )
    )
  ) %>% 
  hc_xAxis(
    minRange = 1
  ) %>% 
  hc_add_series(
    pointStart = start,
    pointInterval = day,
    data = c(3, 4, 1)
  )

示例二:使用您的数据 添加
x
位置时要小心。Highcharter包括一个
datetime\u to\u timestamp
函数,用于将日期转换为highcharts所需的历元/时点

library(xts)

dt <- seq(as.Date("2014/1/30"), as.Date("2018/2/6"), "days")
dt <- dt[!weekdays(dt) %in% c("Saturday", "Sunday")]
n <- length(dt)
x <- xts(rnorm(n), order.by=dt)
y <- xts(rnorm(n), order.by=dt)
z <- xts(rnorm(n), order.by=dt)


highchart(type = "stock") %>% 
  hc_title(text = "Some time series") %>% 
  hc_add_series(x, color='green', name="x", showInLegend = TRUE) %>%
  hc_add_series(y, color='red', name="y", showInLegend = TRUE) %>% 
  hc_add_series(z, color='blue', name="z", showInLegend = TRUE) %>% 
  hc_navigator(enabled=FALSE) %>% 
  hc_scrollbar(enabled=FALSE) %>%
  hc_legend(enabled=TRUE, layout="horizontal") %>%
  hc_add_annotation(
    labels = list(
      list(
        point = list(
          xAxis = 0,
          yAxis = 0,
          x = datetime_to_timestamp(as.Date(index(x)[900])),
          y = 1
        ),
        text = "Hello world! How can I make this work!"
      )
    )
  )
库(xts)
dt%
hc_滚动条(启用=错误)%>%
hc_图例(启用=真,布局=水平”)%>%
hc_添加_注释(
标签=列表(
名单(
点=列表(
xAxis=0,
yAxis=0,
x=日期时间到时间戳(截至日期(索引(x)[900]),
y=1
),
text=“你好,世界!我怎样才能让它工作!”
)
)
)

请提供一个最小的可复制示例,以帮助他人提供帮助you@jbkunst谢谢,为生成数据添加了一段代码。我准备了一个Highstock(纯JS)中注释的最小示例,一切似乎都很正常:
index(x)[900]的值是多少
在您的代码中?@KamilKulig我确信Highchart库在JS中比在R中工作得更好。有没有线索说明为什么它在R中不工作?不幸的是,我对R不太了解。Highcharter不是一个官方包装器-Highcharts中没有出现的一些问题可能会出现在它中。也许包装器的创建者会有所帮助@jbkunst?谢谢你把这个贴出来。我尝试了你的脚本,但得到了一个没有注释的图形。我还查看了
datetime\u-to\u-timestamp
的输出,这是一个很大的科学数字,比如
1.499818e+12
,不确定这是否是它工作的原因,但只是想知道是否有其他设置或选项,或者可能是代码中没有提供的操作系统。我在Windows10上使用RStudio。谢谢您使用的是highcharter的开发版本吗?我使用的是Highchart R库,而不是它的任何其他版本。开发是指该软件包的最新版本(可能尚未在CRAN上),其中包含HighChartsJS的新版本、修复的错误、新的功能等。请参阅