highcharts 在HighcharteR中的hc_add_series之后添加工具提示

1mrurvl1  于 2023-10-20  发布在  Highcharts
关注(0)|答案(1)|浏览(125)

我需要创建一个图表与一些箱线图和散点与工具提示的散点(JS函数)。然后我使用hc_export()导出结果,以便在highcharts-export-server中使用它。
实际的代码是(不是真实的代码.):

myboxplot <- highchart() %>%
    # add all my boxplots
    hc_add_series_list(myboxplotData) %>%
    # add a scatter
    hc_add_series( data = mydf,
        type = "scatter",
        hcaes(x = "label", y = "value", group = "label"),
        # add tooltip to scatter
        tooltip=list(headerFormat="",pointFormatter= JS("function(){
            return('<strong><i>Sample : ' +
            this.name_sample +
            '</i><br>Expression : ' + Math.round((this.value + Number.EPSILON) * 1000) / 1000 +
            '<br>Description : ' + this.description
            '</strong>')}"))
    ) 
# export the chart
export_hc(myboxplot, filename = paste0("/tmp/hc_boxplot.js"), as = "is")

它工作得很好,但问题是,如果我想在highcharts-export-server中使用hc_boxplot.js文件,我必须删除JS部分(分散工具提示),否则它会抛出错误。
所以我需要在export_hc()函数之后添加工具提示,类似于这样:

myboxplot <- highchart() %>%
    # add all my boxplots
    hc_add_series_list(myboxplotData) %>%
    # add a scatter
    hc_add_series( data = mydf,
        type = "scatter",
        hcaes(x = "label", y = "value", group = "label")
    ) 
# export the chart
export_hc(myboxplot, filename = paste0("/tmp/hc_boxplot.js"), as = "is")
# add the tooltip
myboxplot <- myboxplot %>%
    # add tooltip to scatter
        hc_tooltip=(headerFormat="",pointFormatter= JS("function(){
            return('<strong><i>Sample : ' +
            this.name_sample +
            '</i><br>Expression : ' + Math.round((this.value + Number.EPSILON) * 1000) / 1000 +
            '<br>Description : ' + this.description
            '</strong>')}")

这会将工具提示添加到散点图中,但会删除箱线图上的工具提示(未显示)。如何只访问散点序列?Thanx

pn9klfpd

pn9klfpd1#

我通过在Rstudio中打印(查看)R boxplot对象找到了自己。
在series的每个元素上使用循环,我们可以设置工具提示的值。

mypointformatter <- "function(){return('<strong><i>Sample : ' + this.name_sample + '</i><br>Expression : ' + Math.round((this.value + Number.EPSILON) * 1000) / 1000 + '<br>Description : ' + this.description + '<br>pTNM : ' + this.pTNM + '<br>Grade : ' + this.grade + '<br>Statut MRES : ' + this.statut_MRES + '<br>Statut Basal-like : ' + this.statut_basal + '</strong>')}"
class(mypointformatter) = "JS_EVAL"
for (serie in seq(first_elt_index, last_elt_index,1) ) {
    myboxplot[["x"]][["hc_opts"]][["series"]][[serie]][["tooltip"]][["headerFormat"]] = ""
    myboxplot[["x"]][["hc_opts"]][["series"]][[serie]][["tooltip"]][["pointFormatter"]] = mypointformatter
}

相关问题