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

Chart.js如何显示标签的光标指针

曹成双
2023-03-14

我有以下使用chart.js的折线图示例。我想展示:

  1. 图例的指针光标
 var line_chart = new Chart(document.getElementById("line-chart"), {
        type: 'line',
        data: {
            labels: ['May', 'June', 'July'],
            datasets: [{
                    data: [15, 25, 15],
                    label: "My Dataset1",
                    borderColor: "#00F",
                    fill: false
                }, {
                    data: [35, 15, 25],
                    label: "My Dataset2",
                    borderColor: "#F00",
                    fill: false
                }
            ]
        },
        options: {

            tooltips: {
                mode: 'label',
            },
            hover: {
                mode: 'label'
            },
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>

<div style='width:80%'>
<canvas id="line-chart" width="800" height="450"></canvas>
</div>

共有3个答案

封德华
2023-03-14

>

  • 从Chart js版本3.5.1开始,onHover()选项看起来略有不同,查找点的方法也发生了变化。

    “目标”在“e.native”下嵌套了一层

    通过将交互模式设置为“索引”,我可以在悬停时的一个工具提示中看到我的组合图表值。

    options: {
       interaction: { mode: 'index' },
       onHover: function (e) {
         const points = this.getElementsAtEventForMode(
           e,
           'index', { axis: 'x', intersect: true },
           false
         );
    
         if (points.length) e.native.target.style.cursor = 'pointer';
         else e.native.target.style.cursor = 'default';
       }
    }
    

  • 浦泳
    2023-03-14

    只需将其添加到选项中:

    onHover: (event, chartElement) => {
        const target = event.native ? event.native.target : event.target;
        target.style.cursor = chartElement[0] ? 'pointer' : 'default';
    }
    
    巢德华
    2023-03-14

    无需jQuery来选择画布元素(折线图)。

    1.▸ 解决方案:

    在图表选项中添加以下内容:

       legend: {
          onHover: function(e) {
             e.target.style.cursor = 'pointer';
          }
       },
       hover: {
          onHover: function(e) {
             var point = this.getElementAtEvent(e);
             if (point.length) e.target.style.cursor = 'pointer';
             else e.target.style.cursor = 'default';
          }
       }
    

    2解决方案:

    将工具提示的模式设置为数据集

    tooltips: {
       mode: 'dataset'
    }
    

    ᴡᴏʀᴋɪɴɢ ᴇxᴀᴍᴘʟᴇ ⧩

    var line_chart = new Chart(document.getElementById("line-chart"), {
       type: 'line',
       data: {
          labels: ['May', 'June', 'July'],
          datasets: [{
             data: [15, 25, 15],
             label: "My Dataset1",
             borderColor: "#00F",
             fill: false
          }, {
             data: [35, 15, 25],
             label: "My Dataset2",
             borderColor: "#F00",
             fill: false
          }]
       },
       options: {
          tooltips: {
             mode: 'dataset',
          },
          legend: {
             onHover: function(e) {
                e.target.style.cursor = 'pointer';
             }
          },
          hover: {
             onHover: function(e) {
                var point = this.getElementAtEvent(e);
                if (point.length) e.target.style.cursor = 'pointer';
                else e.target.style.cursor = 'default';
             }
          }
       }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
    
    <div style='width:80%'>
       <canvas id="line-chart" width="800" height="450"></canvas>
    </div>
     类似资料:
    • 我最近更新了我的charts.js库到最新版本(2.5.0)。这个版本不显示图表上的标签。 我有一个在《小提琴手:http://jsfiddle.net/g6fajwg8》上工作的例子。 但是,我完全按照示例中的方式定义了我的图表,但仍然看不到图表上的标签。 注意:在Google和Stackoverflow上有很多这样的问题,但其中大多数都是关于以前的版本,这些版本在它们上运行良好。

    • 注意:即使某些“区域”没有值,也应该显示标签0、0.1、0.2、0.3、0.4和0.5。我尝试了我的不同选项,我发现的“最佳”是控制要显示的标签数量,但它不是我想要的:

    • 我一直在使用Chart.Js,但由于时间限制和个人对D3等人的SVG路线的偏好,我尽最大努力避免进入画布本身。 我在仪表板页面上混合了各种图表,除了一个问题外,其他一切看起来都很棒——你必须将鼠标悬停在饼图段上才能看到潜在的%或值。 对于仪表板视图,我的用户更喜欢快速查看数据段上的一些数据标签,就像Excel一样,可能更容易用图像进行解释: https://support.office.com/e

    • 我使用Chart.js库绘制条形图,我想显示工具提示不仅在条形图悬停,而且在x轴标签悬停该条形图。我找到了用于配置的方法,但它只允许我访问当前悬停栏的数组,这是没有用的。 那个么,我怎样才能访问鼠标事件,并从那个里获取位置,将其与条形标签的位置进行比较呢?还是有别的办法? 我当前的配置: 它只打印出悬停条数据,但我坚持要想出如何扩展它以满足我需要的行为。

    • 我有一个对象列表,它具有以下属性 公共类ViewTestCasesBean { } 现在我的行动代码是... 这里详细说明List是要在显示标签中显示的上述对象的List。 我尝试了以下方法 但是得到了以下错误... 编码有什么问题?

    • 我已经为我的spring boot应用程序配置了测微计和prometheus,我可以在endpoint/执行器/prometheus处看到以下指标(使用计时器生成): 但当我在Grafana中运行其中一个查询(针对prometheus实例配置)时,我没有看到任何结果。 这需要任何配置吗?