0

我采用发布的示例之一,并通过删除一些数据对其进行了轻微修改。当集合没有相同数量的数据点时,工具提示将停止显示。请看以下两个例子。第一个是在文档中发布的。二是修改版。从结束数据点开始悬停时,工具提示不会显示最后一列的任何内容。来自文档的示例:https ://codepen.io/junedchhipa/pen/YJQKOy

var options = {
      chart: {
        height: 310,
        type: 'line',
        stacked: false,
      },
      stroke: {
        width: [0, 2, 5],
        curve: 'smooth'
      },
      plotOptions: {
        bar: {
          columnWidth: '50%'
        }
      },
      series: [{
        name: 'Series Column',
        type: 'column',
        data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]
      }, {
        name: 'Series Area',
        type: 'area',
        data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43]
      }, {
        name: 'Series Line',
        type: 'line',
        data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]
      }],
      fill: {
        opacity: [0.85,0.25,1],
                gradient: {
                    inverseColors: false,
                    shade: 'light',
                    type: "vertical",
                    opacityFrom: 0.85,
                    opacityTo: 0.55,
                    stops: [0, 100, 100, 100]
                }
      },
      labels: ['01/01/2003', '02/01/2003','03/01/2003','04/01/2003','05/01/2003','06/01/2003','07/01/2003','08/01/2003','09/01/2003','10/01/2003','11/01/2003'],
      markers: {
        size: 0
      },
      xaxis: {
        type:'datetime'
      },
      yaxis: {
        title: {
          text: 'Points',
        },
        min: 0
      },
      legend: {
        show: false
      },
      tooltip: {
        shared: true,
        intersect: false,
        y: {
          formatter: function (y) {
            if(typeof y !== "undefined") {
              return  y.toFixed(0) + " points";
            }
            return y;

          }
        }
      }

    }

    var chart = new ApexCharts(
      document.querySelector("#chart"),
      options
    );

    chart.render();


    // check if the checkbox has any unchecked item
    checkLegends()

    function checkLegends() {
      var allLegends = document.querySelectorAll(".legend input[type='checkbox']")

      for(var i = 0; i < allLegends.length; i++) {
        if(!allLegends[i].checked) {
          chart.toggleSeries(allLegends[i].value)
        }
      }
    }

    // toggleSeries accepts a single argument which should match the series name you're trying to toggle
    function toggleSeries(checkbox) {
      chart.toggleSeries(checkbox.value)
    }

修改示例: https ://codepen.io/mmk2118/pen/mdbpOWN

var options = {
      chart: {
        height: 310,
        type: 'line',
        stacked: false,
      },
      stroke: {
        width: [0, 2, 5],
        curve: 'smooth'
      },
      plotOptions: {
        bar: {
          columnWidth: '50%'
        }
      },
      series: [{
        name: 'Series Column',
        type: 'column',
        data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30]
      }, {
        name: 'Series Area',
        type: 'area',
        data: [44, 55, 41, 67, 22, 43, 21, 41]
      }, {
        name: 'Series Line',
        type: 'line',
        data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39]
      }],
      fill: {
        opacity: [0.85,0.25,1],
                gradient: {
                    inverseColors: false,
                    shade: 'light',
                    type: "vertical",
                    opacityFrom: 0.85,
                    opacityTo: 0.55,
                    stops: [0, 100, 100, 100]
                }
      },
      labels: ['01/01/2003', '02/01/2003','03/01/2003','04/01/2003','05/01/2003','06/01/2003','07/01/2003','08/01/2003','09/01/2003','10/01/2003','11/01/2003'],
      markers: {
        size: 0
      },
      xaxis: {
        type:'datetime'
      },
      yaxis: {
        title: {
          text: 'Points',
        },
        min: 0
      },
      legend: {
        show: false
      },
      tooltip: {
        shared: true,
        intersect: false,
        y: {
          formatter: function (y) {
            if(typeof y !== "undefined") {
              return  y.toFixed(0) + " points";
            }
            return y;

          }
        }
      }

    }

    var chart = new ApexCharts(
      document.querySelector("#chart"),
      options
    );

    chart.render();


    // check if the checkbox has any unchecked item
    checkLegends()

    function checkLegends() {
      var allLegends = document.querySelectorAll(".legend input[type='checkbox']")

      for(var i = 0; i < allLegends.length; i++) {
        if(!allLegends[i].checked) {
          chart.toggleSeries(allLegends[i].value)
        }
      }
    }

    // toggleSeries accepts a single argument which should match the series name you're trying to toggle
    function toggleSeries(checkbox) {
      chart.toggleSeries(checkbox.value)
    }
4

1 回答 1

1

您的 codepen 示例使用旧版本的 ApexCharts。请通过在此处获取最新版本来更新 https://cdn.jsdelivr.net/npm/apexcharts@latest

此外,如果您在每个系列中有不同数量的数据点,您可以关闭shared工具提示并仅在用户直接将鼠标悬停在条形/标记上时显示工具提示。

tooltip: {
  shared: false,
  intersect: true
}
于 2019-09-06T05:40:38.160 回答