chartjs自动显示工具提示

5t7ly7z5  于 2022-11-06  发布在  Chart.js
关注(0)|答案(2)|浏览(298)

我为天气创建图表。我想在创建图表时自动显示最后一个数据点的工具提示。当鼠标移动到另一个数据点时,工具提示应该移动到鼠标的新数据点,如果鼠标在新数据点之外,工具提示应该消失。
https://www.chartjs.org/docs/3.8.0/samples/advanced/programmatic-events.html已经很近了。谢谢!

  1. function triggerTooltip(chart) {
  2. const tooltip = chart.tooltip;
  3. if (tooltip.getActiveElements().length > 0)
  4. { tooltip.setActiveElements([], {x: 0, y: 0}); }
  5. else {
  6. const chartArea = chart.chartArea;
  7. tooltip.setActiveElements([
  8. {
  9. datasetIndex: 0,
  10. index: 0,
  11. }, {
  12. datasetIndex: 1,
  13. index: 0,
  14. }],
  15. { x: (chartArea.left + chartArea.right) / 2,
  16. y: (chartArea.top + chartArea.bottom) / 2, });
  17. }
  18. chart.update(); }

我确实期望索引控制条,为工具提示。但它没有什么区别,无论索引是设置。而且当我改变x,y它仍然在同一个地方(接近第三条)。enter image description here

xmakbtuz

xmakbtuz1#

这可以通过afterDatasetUpdate挂钩中的插件核心API来完成,如下所示:

  1. afterDatasetUpdate: chart => {
  2. if (!chart.tooltip.getActiveElements().length) {
  3. chart.tooltip.setActiveElements([{
  4. datasetIndex: 0,
  5. index: chart.data.datasets[0].data.length - 1
  6. }]);
  7. chart.update();
  8. }
  9. }

请看一下下面的可运行代码片段,看看它是如何工作的。
第一个

zy1mlcev

zy1mlcev2#

谢谢-这正是我要找的!
答案中的代码片段与最后一个数据点上的可见工具提示一起工作。
当我在我的浏览器中的test.html中尝试它时(我测试了firefox,edge,chrome),工具提示是不可见的。
我的test.html中的错误在哪里?

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
  5. <canvas id="myChart" width="400" height="95"></canvas>
  6. <script type="text/javascript">
  7. new Chart('myChart', {
  8. type: 'line',
  9. plugins: [{
  10. afterDatasetUpdate: chart => {
  11. if (!chart.tooltip.getActiveElements().length) {
  12. chart.tooltip.setActiveElements([{
  13. datasetIndex: 0,
  14. index: chart.data.datasets[0].data.length - 1
  15. }]);
  16. chart.update();
  17. }
  18. }
  19. }],
  20. data: {
  21. labels: ["January", "February", "March", "April", "May", "June", "July"],
  22. datasets: [{
  23. label: '# of Events',
  24. data: [65, 59, 80, 20, 81, 56, 55, 68],
  25. borderColor: '#a00'
  26. }]
  27. }
  28. });
  29. </script>
  30. </body>
  31. </html>

这就是我的考验:

  1. https://www.zebrafell.de/test.html
展开查看全部

相关问题