代码之家  ›  专栏  ›  技术社区  ›  Bogaso

在图表中添加自定义工具提示

  •  2
  • Bogaso  · 技术社区  · 6 年前

    我正在使用一个名为amCharts in R的JS库进行交互式可视化,如下所示。

    在我的绘图中,我想在工具提示中使用自定义HTML文本(即气球)。因此,使用以下代码进行了尝试:

    library(rAmCharts)
    Dat = data.frame(x = paste(as.character(-10:10), "%", sep = ""), y = -10:10,
                        z_Balloon = paste("<p style='font-size: 120%; font-weight: bold; margin-bottom: 15px;''></p>
                                              <table>
                                                <tr><th>People Name</th></tr>\
                                                <tr><td>", -10:10, "</td></tr></table>", sep = ""))
    
    ###However for '0' there shall not be any Balloon text
    Dat[11, 3] = "<NA>"
    
    amPlot(x = Dat$x, y = Dat$y, type = 'line', fill_alphas = .5, balloonText = Dat$z_Balloon)
    

    但是,正如您所看到的,我的代码无法更改工具提示。

    如果有人能指引我走向正确的方向,我将不胜感激。

    谢谢

    *****根据Marco的建议进行更新**

    我已更新Marco的代码,使其能够在X=0时不显示气球:

    library(rAmCharts)
    Dat = data.frame(x = paste(as.character(-10:10), "%", sep = ""), y = -10:10)
    
    balloonFunction <- htmlwidgets::JS(
        "function(item) {",
        "if (item.category != '0%') {",
        "return \'X: \' + item.category + \'<br>Y: \' + item.values.value;",
        "}",
        "else {",
        "return NULL",
        "}",
        "}")
    
    p <- amPlot(x=Dat$x, y=Dat$y, type='line', fill_alphas=0.5) 
    p@graphs[[1]]$balloonFunction <- balloonFunction
    setBalloon(p, cornerRadius=10, color="white", fillColor="red", textAlign="left")
    

    然而,我仍然无法找到一种方法来合并第三个变量来显示气球。

    任何想法都将受到高度赞赏。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Marco Sandri    6 年前

    以下是一个可行的解决方案:

    library(rAmCharts)
    library(purrr)
    set.seed(1)
    Dat = data.frame(x = paste(as.character(-10:10), "%", sep = ""), y = -10:10, z=rnorm(21))
    
    balloonFunction <- htmlwidgets::JS(
        'function(item) {',
        'if (item.category!="0%") { return \'X: \' + item.category + 
                                   \'<br>Y: \' + item.values.value +
                                   \'<br>Z: \' + item.dataContext[\'z\'];}',
        '}')
    
    p <- amSerialChart(categoryField = "x", precision = 2) %>%
      setDataProvider(dataProvider = Dat, keepNA = TRUE) %>%
      addGraph(valueField = "y", lineColor = "gray", fillAlphas=0.5, 
               bullet="round", lineThickness=4) %>%
      setChartCursor() %>%
      setBalloon(cornerRadius=10, color="white", fillColor="red", textAlign="left")
    p@graphs[[1]]$balloonFunction <- balloonFunction
    p@valueAxes <- list(list(title='y-axis name', position='left', axisAlpha=0.5))
    p@categoryAxis <- list(title='x-axis name', axisAlpha=0.5)
    p
    

    enter image description here