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

如何在ChartJS中过滤图表上的悬停?

郑翰海
2023-03-14

我正在尝试用ChartJS制作一个甜甜圈进度表。我想显示完成百分比(即完成5%)。

目前,我有一个带有数据< code>[5,95]的图表,因为(据我所知),ChartJS不允许只添加百分比,它用灰色数据线填充图表的其余部分,所以我必须添加< code>95数据点。

我已经使用工具提示过滤器使工具提示不显示在图表的95部分,但我现在想防止当我将鼠标悬停在95部分数据点上时背景更改颜色。目前,它在悬停时看起来像这样,我想修复:

总而言之,我希望允许实际进度数据点(5)能够在悬停时更改颜色,但不能更改图表的另一部分,因为它只是一个占位符,以显示100个中5%的样子。

            var config = {
                type: 'doughnut',

                data: {
                    datasets: [{
                        data: [
                            studentProgress, (100 - studentProgress),
                        ],
                        backgroundColor: [
                            "#646c9a",
                            "#FDFDFD"
                        ],
                        hoverBorderWidth: 0,
                        borderWidth: 0,
                    }],
                    labels: [
                        'Course Progress',
                        'Todo',
                    ],
                },
                options: {
                    cutoutPercentage: 75,
                    responsive: true,
                    circumference: Math.PI,
                    rotation: Math.PI,
                    maintainAspectRatio: false,
                    legend: {
                        display: false,
                        position: 'top',
                    },
                    title: {
                        display: false,
                        text: 'test'
                    },
                    animation: {
                        animateScale: true,
                        animateRotate: true
                    },
                    tooltips: {
                        enabled: true,
                        intersect: false,
                        mode: 'nearest',
                        bodySpacing: 5,
                        yPadding: 10,
                        xPadding: 10,
                        caretPadding: 0,
                        displayColors: false,
                        backgroundColor: '#5d78ff',
                        titleFontColor: '#ffffff',
                        cornerRadius: 4,
                        footerSpacing: 0,
                        titleSpacing: 0,
                        filter: function (tooltipItem, data) {
                            var label = data.labels[tooltipItem.index];
                            if (label == "Todo") {
                                return false;
                            } else {
                                return true;
                            }
                        }
                     }
                }
            };

            var ctx = document.getElementById('chart_progress').getContext('2d');
            var myDoughnut = new Chart(ctx, config);

共有1个答案

龙宣
2023-03-14

您可以使用 hoverBackgroundColor。只需对灰色使用相同的颜色代码即可。

backgroundColor: [
  "#646c9a",
  "#FDFDFD"
],

hoverBackgroundColor: [
  "#8389ae",
  "#FDFDFD"
],

缺点:你必须为你的其他数据集考虑一个高亮的颜色代码。使用rgba值可能更容易,因此您只需更改alpha值,而无需计算或考虑其他颜色代码。

 类似资料:
  • 我认为我的问题是一个已知的问题,每次我制作一个新的图表,并将鼠标悬停在画布上的一些点上,旧的图表总是会闪进闪出。这是我试图修复它的一个线程,但似乎没有任何效果。我试图重新添加画布,使用破坏,清除,如果语句应该清除它,但什么都没有。 这是我的代码: 我尝试添加

  • 我有下面的地图地图,并想过滤它的基础上的一个值。结果应分配回同一地图。请告诉我什么是最好的方法。 我尝试了如下操作,但无法访问employee对象

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在

  • 我有以下利用ChartJS库的代码。 …一切正常,但在添加以下事件处理程序以清除并重新绘制具有不同数据的同一图表后,出现了故障。 这段代码确实成功地用新数据重绘了图表,但是当我将鼠标悬停在它上面时,它会对应该清除的旧图表进行一些非常奇怪的“闪回”。这让我相信它没有清除旧的。

  • 我有两个集合。(andand)。当用户申请工作时,我将该记录存储在集合中。像这样: 现在,我想按用户显示所有申请工作。首先:获取日志用户ID,我存储本地日志用户ID。所以,我可以获取日志用户ID。 第二:我根据该id筛选应用作业。如下所示,

  • 我有一个使用chart.js创建的条形图。页面加载时一切正常,但当我使用daterangepicker更改时间范围时,出现了一个小故障。新数据被引入,但当我将鼠标悬停在上面时,旧数据会显示出来。我是javascript新手,希望能得到一些帮助。看起来我需要合并。销毁();不知怎么的,但我不知道怎么做。下面是我的代码片段: 破坏原始数据的最佳方法是什么,以便当我更改日期范围并将鼠标悬停在新图表上时,