javascript - 在比较模式下,Amcharts 在一张图表上显示多个工具提示(气球)

标签 javascript amcharts amstock

我有 4 个股票图表想要比较。当我尝试为它们设置 ballon 属性时,我总是得到一些多余的属性。

我的第一个想法是只指定一个 StockGraph 但我得到了一个额外的对象。

 let chart = window.AmCharts.makeChart("chartdiv", {
          "path": AmCharts_path,
          "type": "stock",
          "theme": "light",

          "dataSets": portfolioData.map(function (port) {
            return {
              "title": port.name,
              "fieldMappings": [{
                "fromField": "value",
                "toField": "value"
              }],
              "dataProvider": port.data,
              "compared": true,
              "categoryField": "date"
            }
          }),

          "panels": [{
            "showCategoryAxis": false,
            "title": "Value",
            "percentHeight": 70,
            "stockGraphs": [
              {
                "id": "g1",
                "valueField": "value",
                "comparable": true,
                "compareField": "value",
                "balloonText": "Smart Gloabal A-[[title]]:<b>[[value]]</b>",
              }
             ]
          }],

          "chartScrollbarSettings": {
            "graph": "g1"
          },

          "chartCursorSettings": {
            "valueBalloonsEnabled": true,
            "fullWidth": true,
            "cursorAlpha": 0.1,
            "valueLineBalloonEnabled": true,
            "valueLineEnabled": true,
            "valueLineAlpha": 0.5
          },

          "listeners": [{
            "event": "zoomed",
            "method": this.calulateMetrics
          }],

然后我决定删除 ballonText 属性。但这个额外的对象仍然存在。

        "stockGraphs": [
          {
            "id": "g1",
            "valueField": "value",
            "comparable": true,
            "compareField": "value",
            //"balloonText": "A-[[title]]:<b>[[value]]</b>",
            "compareGraphBalloonText": "B [[title]]:<b>[[value]]</b>"
          }
         ]

然后我决定描述每个图表的逻辑,但这只会增加我的对象数量。

        "stockGraphs": portfolioData.map(function (port, idx) {
          return {
           "id": "g"+(idx+1),
            "valueField": "value",
            "comparable": true,
            "compareField": "value",
            "balloonText": "A-[[title]]:<b>[[value]]</b>",
            "compareGraphBalloonText": "B [[title]]:<b>[[value]]</b>"
          }
        }),

我尝试按照官方网站上的示例进行操作,但没有找到相关的示例。

最佳答案

第一个屏幕截图中的额外气球来自您的第一个 dataSet 对象。第一个 dataSet 默认情况下可见,因此不需要将 compared 设置为 true;将其设置为 true 将从第一个 dataSet 复制气球(如果启用,您可以看到第一个 dataSet 在图例中重复自身)。您可以通过稍微调整 map 调用来解决此问题:

      "dataSets": portfolioData.map(function (port, idx) {
        return {
          "title": port.name,
          "fieldMappings": [{
            "fromField": "value",
            "toField": "value"
          }],
          "dataProvider": port.data,
          "compared": (idx === 0 ? false : true), //don't compare the first dataSet
          "categoryField": "date"
        }
      }),

关于javascript - 在比较模式下,Amcharts 在一张图表上显示多个工具提示(气球),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51537472/

相关文章:

javascript - 我似乎无法找到一种方法来获取 swisnl 的 jQuery ContextMenu 上的单选按钮组单击事件

javascript - 如何处理 AmCharts Stock 图表上的点击事件?

javascript - AJAX 响应后重新加载 amchart

javascript - 在股票图表 amcharts 中显示气球

javascript - Amcharts:如何在气球函数中传递标题?

javascript - 计算表行并填充总计字段

javascript - 在哪些浏览器中查询字符串(以防止缓存)有效?

javascript - 检查变量中的对象是否也包含在另一个变量中(jQuery)

javascript - AmChart 在 safari 中不工作

javascript - 更改 AmCharts 股票图表中图形的颜色