当前位置: 首页 > 知识库问答 >
问题:

Chart.js 2.7.0分组水平条形图,如何获取工具提示以显示一个条形图的数据,而不是整个组的数据?

公风史
2023-03-14

以下是分组水平条形图:

http://jsfiddle.net/jmpxgufu/185/

var ctx=document.getElementById(“myChart”).getContext(“2d”);

        var chart = {
        options: {
        scales: {
                 yAxes: [{ barPercentage: 1.0 }],
          },
      tooltips: {
         callbacks: {
            label: function(tooltipItem, data) {
console.log(tooltipItem);
           return data.datasets[tooltipItem.datasetIndex].label +': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index].toLocaleString();
}
}
},          
          responsive: true,
          maintainAspectRatio: false,
          animation: {

                    onComplete: function(animation) {
                    }
                }
      },
        type: 'horizontalBar',
        data: {
            labels: ['Topic1'],
      datasets: [
      {
         label: 'Something',
         borderColor: 'blue',
         borderWidth: 1,
         backgroundColor: Color('blue').alpha(0.5).rgbString(),
         data: [40],
         fill: false
      },
      {
         label: 'Something else',
         borderColor: 'orange',
         borderWidth: 1,
         backgroundColor: Color('orange').alpha(0.5).rgbString(),
         data: [17],
         fill: false
      }
      ]
        }};

   var myLiveChart = new Chart(ctx, chart);

如果你看一下图表,有两个条形(一个橙色和一个蓝色)与标签“Topic1”相关联。

当我悬停在橙色条上时,它说:

Topic1
Something: 40
Something else: 17

当我悬停在蓝色条上时,它说:

Topic1
Something: 40
Something else: 17

您还会注意到,因为组中有两个条,所以函数执行了两次,取我的字符串我正在返回,并形成这个分组的工具提示消息(我把console.log放在那里以显示它正在执行两次)...

我只想要我悬停在上面的那个条的数据

当我将鼠标悬停在橙色条上时,我希望它说:

Topic1
Something else: 17

当我悬停在蓝色条上时,我想让它说:

Topic1
Something: 40

但是,我还没有弄清楚如何确定哪个是活动条(两个条中的一个)。

我错过了什么?

共有1个答案

仲孙鸣
2023-03-14

要获得所需的行为,您需要将工具提示模式设置为最近的/

tooltips: {
   mode: 'nearest'
}

从文档中:

#最近的
获取离该点最近的项。根据到图表项中心的距离(点、条)确定最近的项。如果两个或多个项目位于同一距离,则使用面积最小的项目。如果intersect为true,则仅当鼠标位置与图形中的项目相交时才会触发此操作。这对于将点隐藏在栏后的组合图非常有用。

这是工作小提琴。

 类似资料:
  • 我使用MPAndroidChart条形图(分组数据集)显示两个用户的数据。它正在显示数据,但问题是,它从一开始就没有在x轴上显示数据,因此所有条形图都不可见。 阵列: 条形图: 我已经尝试了stackoverflow的答案,但没有解决我的问题。请帮助! 更新: 是否可以将标签与条形图居中?

  • 我使用的是Chart.js2.6,我已经实现了horizontalLine插件,在条形图上显示平均值。它可以正常工作,但是当工具提示显示在与直线相交的位置时,它部分被水平线本身覆盖。我试图找出如何使工具提示在水平线上方绘制。 我知道工具提示是canvas元素的一部分,因此没有z-index属性。我怎样才能做到这一点? 下面是我使用的水平线插件。 ... 然后我使用以下命令将其添加到条形图选项中 它

  • 我有一个这样的数据帧: 现在,我想绘制水平条形图,其中平台名称位于相应的条形图中,使其看起来像这样: 我该怎么做?

  • 问题内容: 需要查看条形图中的条形所代表的确切值,而不是Y轴上的近似值。 怎么可能呢? 谢谢阅读! 问题答案: 在iReport 3.7.6中,您可以仅选中BarPlot属性下的“显示标签”框。 在以前的版本(3.1.4)中,我必须创建一个ChartCustomizer类。 如果您需要格式化标签中的数字(例如,设置为百分比,添加千位分隔符等),那么即使在新版本中,您也绝对需要一个ChartCust

  • 在一个html页面中,我有一个选择菜单(a, b, c, d)和一个条形图(a, b, c, d)。我想做的是在选择菜单中选择的条形图中突出显示相应的条形图。

  • 我有多个数据帧,我想在分组条形图视图中的同一个图上绘制它们。 这是两个非常小的数据帧,我想在同一个图中一起绘制。 数据帧是: 我想画一个像这样的图: 我尝试这样做,只绘制一个图形: 我也试过: 结果只是图片中单个数据帧的数据,而不是两个数据帧的两个数据。请注意,只有两个数据帧的标题出现在同一张图片中,数据仅来自单个独立的数据帧。