Chartjs如何在动画后应用

2023-12-09

尝试扩展图表,以便我可以绘制线条直到数据点,但这是在默认动画之前发生的。如果之后涂抹的话会看起来更光滑。

我已经完成了大部分工作..但是我如何在图表动画之后应用它。

var originalLineDraw = Chart.controllers.line.prototype.draw;
Chart.helpers.extend(Chart.controllers.line.prototype, {
    draw: function () {
        originalLineDraw.apply(this, arguments);
        var chart = this.chart;
        var ctx = chart.chart.ctx;
        var index = chart.config.data.lineAtIndex;
        if (index) {
            var xaxis = chart.scales['x-axis-0'];
            var yaxis = chart.scales['y-axis-1']
            var points = this.chart.getDatasetMeta(this.index).data;
            for (var i = 0; i < points.length; i++) {
               // var point_x = points[i]._model.x;
                var point_y = points[i]._model.y;
                ctx.beginPath();
                ctx.setLineDash([5, 5]);/*dashes are 5px and spaces are 3px*/
                ctx.moveTo(xaxis.getPixelForValue(undefined, i), point_y);
                ctx.strokeStyle = '#fff';
                ctx.lineTo(xaxis.getPixelForValue(undefined, i), yaxis.bottom);
                ctx.stroke();
            }
        }
    }
});

更新...

尽管 darw 不正确,但它仍在动画后播放

var verticalLinePlugin = {

    renderVerticalLine: function (chartInstance) {

        var chart = chartInstance;
        var ctx = chart.chart.ctx;
        var maxpoint = [];

        //loop the datasets
        for (var y = 0; y < chart.config.data.datasets.length; y++) {
            var dataset = chart.config.data.datasets[y];
            if (dataset.hidden)
                continue;
            var points = chart.getDatasetMeta(y).data;
            for (var i = 0; i < points.length; i++) {
                var point_y = points[i]._model.y;
                if (point_y < 0)
                    continue;
                var point = maxpoint[i];
                if (point == undefined) {
                    maxpoint.push({ id: i, y: point_y });
                } else {
                    if (point.y > point_y) {
                        point.y = point_y;
                    }
                }
            }
        }

        var xaxis = chart.scales['x-axis-0'];
        var yaxis = chart.scales['y-axis-1']

        chart.data.datasets.forEach(function (dataset, i) {
            var ds = dataset;
            var meta = chart.getDatasetMeta(i);
            meta.data.forEach(function (element, index) {

                var value = maxpoint[i];

                ctx.beginPath();
                ctx.setLineDash([5, 5]);
                ctx.moveTo(xaxis.getPixelForValue(undefined, i), value.y);
                ctx.strokeStyle = '#fff';
                ctx.lineTo(xaxis.getPixelForValue(undefined, i), yaxis.bottom);
                ctx.stroke();

            });


        });
    },

    afterRender: function (chart) {
        this.renderVerticalLine(chart);
    }
};
Chart.plugins.register(verticalLinePlugin);

我做了一些小更改(不直观!),垂直线现在出现在动画之后。

  1. 从元数据而不是数据中获取 x 值。 任何一个:

    var x_point = element._model.x;
    

    or:

     var position = element.tooltipPosition();
     var x_point = position.x;
    
  2. 把图包起来if(!hidden){},然后垂直线将消失并与数据一起重新出现。 (三元赋值修复了数据开始隐藏时的冲突)

  3. 您需要 value=max[i] 吗?如果只是画线到点,可以得到与 x 相同的 y_point。

 

        var xaxis = chart.scales['x-axis-0'];
        var yaxis = chart.scales['y-axis-1'];

        chart.data.datasets.forEach(function (dataset, i) {

            var meta = chart.getDatasetMeta(i);
            var hidden = (meta.hidden != undefined) ? meta.hidden : dataset.hidden

            if(!hidden){
                meta.data.forEach(function (element, index) {

                    //var value = maxpoint[i];
                    var x_point = element._model.x;
                    var y_point = element._model.y;

                    ctx.beginPath();
                    ctx.save();
                    ctx.setLineDash([5, 5])
                    ctx.strokeStyle = '#fff';
                    ctx.moveTo(x_point, y_point); // or value.y
                    ctx.lineTo(x_point, yaxis.bottom)
                    ctx.stroke();
                    ctx.restore();

                });
            }
       });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chartjs如何在动画后应用 的相关文章

  • 如何隐藏/不绘制具有 0/null/未定义值的条形?

    如何隐藏错误的值 0 空或未定义 我尝试过做类似的事情 new Chart this barCanvas nativeElement data datasets data value lt 1 null value value2 lt 1
  • Chartjs 在鼠标悬停时非常快速地调整大小(闪烁)

    我在基于引导的页面中有一个图表 我试图在页面调整大小时调整它的大小 以遵循响应式设计的变化 所以我有这段代码 function redrawChart var w chart container width var c document g
  • 在 Firefox 扩展中,moment.js 不会在 Chart.js 之前加载

    我正在将 Chrome 扩展移植到 Firefox 它将 Chartjs 图表添加到页面中 它需要 moment js 并且在 Chrome 上运行得很好 但是 当我将其移植到 Firefox 时 图表无法加载 并且出现错误 错误 Char
  • 使图表 js 中的标签响应式

    我很难使 y 轴上的标签响应 我希望标签移动到多行 并在空间不足时具有响应式字体大小 我正在使用 Chart js 数据标签库进行标签在水平条形图的顶部 由于外部图表容器 标签也被隐藏 var chart new Chart ctx typ
  • 我想隐藏工具提示中的标签,因为它显示未定义

    我正在使用 Chart js 来显示折线图 如何隐藏 Chart js 折线图的工具提示标签 工具提示中的标签显示undefined所以我想隐藏标签 请参见屏幕截图 也许有一种方法可以修改工具提示 让我只能在工具提示中显示图例值 我的代码如
  • d3.js 和 Chart.js 之间的比较(仅适用于图表)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在项目中多次使用过 Chart js 但从未使用过 d3 js 很多人说 d3 js 是最好的图表 javascript 框架 但没
  • ng2-charts:如何设置 y 轴的固定范围

    我有一个使用 ng2 charts 模块的 Chart js 图表 该图表在 y 轴上显示百分比 在 x 轴上显示时间 是否可以将 y 轴设置为显示 0 到 100 而不是基于数据的动态范围 尝试将以下内容添加到图表选项中 scales y
  • Chart.js:将堆叠条形图的工具提示放置在条形图的顶部

    当我在简单的条形图中有一个条形时 工具提示位于条形的顶部 如果我将鼠标悬停在堆积条形图上 工具提示将放置在average位置 我希望将工具提示始终放在堆叠条形图的顶部 就像简单条形图一样 而不是这种行为 配置位置的唯一两个选项是averag
  • 安装后如何使用 npm 包 (chart.js)?

    我正在制作一个练习 Laravel 站点 并且我已经通过 npm install 安装了 Chart js 这是一个愚蠢的问题 但现在我如何从这里使用它 或通过 npm 安装的任何东西 这些文件安装在节点模块文件夹中 我应该在页眉中使用标签
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • 如何更改chart.js中的标签颜色?

    我有一个像这样定义的饼图 var myChart new Chart ctx type doughnut data labels data labels datasets data data values backgroundColor r
  • 图表js不显示

    我正在尝试使用 Charts js 创建一个简单的折线图 当我运行下面的代码时 没有出现图表 我究竟做错了什么 我正在关注这个教程http www chartjs org docs latest getting started http w
  • Chart.js 点击标签,使用条形图

    我需要有关 Chart js 交互性的帮助 当我单击标签时 我需要返回我单击的列 索引 号 我尝试使用 getElementsAtEvent 但只有当我直接单击图表时它才有效 This http jsfiddle net yxz2sjam
  • Chart.js,设置最大值

    我正在制作雷达图Chart js 但它只会变得与其中的最大值一样大 我希望将其设置为标准最大值 因此范围是 0 到 100 您可以看到您在不同主题上的进度如何 有谁知道如何设置雷达图的最大范围值Chart js 我尝试添加一个设置为 100
  • 可以用vue-chartjs打印图表吗?

    我正在使用 vue chartjs 在网络应用程序上渲染图表 我知道如果您使用原始版本 您可以打印图表library https canvasjs com docs charts methods chart print 但是我不知道如何使用
  • 画布已投入使用。必须先销毁 ID 为“0”的图表,然后才能重新使用画布。图表.JS

    我已经有了图表的数据 我不需要在图表中收到警告 不需要破坏图表 在不破坏图表的情况下更新日期 我用了 myChart 更新 但这不起作用是否还有其他方法可以解决上述错误 const TapsGraphCard props any gt va
  • 在调整窗口大小之前,ChartJS 不会在引导选项卡内绘制图表

    我正在使用 Bootstrap 的选项卡 每个选项卡内都带有 ChartJS 图表 但出现的一个问题是图表画布wont被绘制 直到我调整浏览器窗口的大小 最新的 Chrome 和 Firefox 都发生了这种情况 我一直在尝试不同的解决方案
  • 如何在 Chart.js 2 中设置轴的步长?

    我使用带有 3 个 Y 轴的 Chart js 创建了一个简单的折线图 https codepen io anon pen dZVgKw https codepen io anon pen dZVgKw 正如您所看到的 最后一个从 10 到
  • 在 Y 轴上显示时间 - 气泡图

    我碰到Bubble Chart 最新补充 在ng2 图表 https valor software com ng2 charts 我试图根据 Y 轴的时间和 X 轴的值显示数据 我的数据就像 x 10 35 60 和 y 7 00 AM 和
  • 如何将光标样式更改为悬停在图表点上的指针?

    我正在使用 Chart js v 2 库 当用户将鼠标悬停在图表点上时 我试图将光标样式更改为 指针 我将把它与条形图 饼图 折线图一起使用 看来charts js v 2 中应该支持这个选项 但我在任何地方都找不到例子 编辑 我没有提到我

随机推荐

  • 使用 confint() 估计 GLMM CI 时出错

    我有一组装有二元响应变量和一组连续变量的 GLMM 我想获得每个模型的置信区间 我一直在使用confint 功能 在 95 并且与profile方法 如果将其应用于没有交互的模型 那么它的工作不会出现任何问题 然而 当我申请时confint
  • 用模板专门化一个模板

    我有一个 免费 函数模板 如下所示 template
  • 确认值未从甜蜜警报服务返回

    已经创建了甜蜜的警报作为单独的服务 我将其注入到我的服务中 这就是贴心的提醒服务 function use strict angular module app services factory SweetAlert SweetAlertSe
  • 在 PyCharm 中添加代码模板 - 可能吗?

    我想向 PyCharm 添加新的代码模板 片段 例如我想扩展lw to log write Line here is sould be cursor after code completition from snippet 就像是https
  • R Xgboost:如何在 Windows 10 上编译具有 GPU 支持的 xgboost

    我按照此链接中提供的说明进行操作 如何在python windows平台 中安装xgboost包 and https xgboost readthedocs io en latest build html installing r pack
  • 单击锚点应该执行 javascript 而不是转到新页面

    我有一个 HTML 锚点 单击该锚点会使 div 向上或向下滑动 我称之为 JQuery 的 slideToggle 功能 我的问题 当我单击该链接时 它不会执行代码 而是会转到一个新页面 其中 url 是 javascript 代码 在我
  • app.config 文件和 XYZ.settings 文件有什么区别?

    我实际上正处于 NET 相关内容的学习阶段 我正在探索如何保存应用程序 我最终编写了自己的类 它将设置保存在 XML 文件中 然后我发现 NET 本身支持保存应用程序设置 但我找到了两种方法可以做到这一点 当我在 Visual Studio
  • 为什么我收到“密钥凭证开始日期无效。”尝试创建 Active Directory 服务主体

    我一直在尝试整合一系列围绕创建和刷新 AD 服务主体和应用程序的操作 我遇到问题的流程是 从 Azure Key Vault 获取证书 使用证书进行身份验证创建服务主体 和应用程序 PS gt Get AzureKeyVaultCertif
  • Jquery 可拖动 + 置于前面

    我有一个带有多个聊天 DIV 的窗口 用户可以在其中与不同的人聊天 目前 聊天 DIV 可以打开并移动 但我看不到将当前选择的 DIV 设置在前面 例如 当您将鼠标放在 DIV 上时 它会进入前台 HTML div class chatMe
  • 将文件上传到 HTML 表单并提交之间会发生什么?

    文件上传到 HTML 表单后 提交之前会发生什么情况 我已将简历上传到该网站https studyhut com employment 然后点击红色X将其删除 但我想确保它确实被删除了 检查 选择文件 按钮的元素 我发现它的 HTML 是
  • 将键值对拆分为 Google BigQuery 中的列

    我对 Google BigQuery 还很陌生 而且确实很挣扎 我的表有以下内容 order id line items 123 id 1 qy 1 sum 1 00 id 2 qy 6 sum 4 50 456 id 1 qy 3 sum
  • Web 应用程序会话与令牌的安全性

    背景 我正在开发一个网络应用程序 计划使用spring mvc和春季安全 我的计划是使用基于表单的身份验证 其中 spring security 验证凭据并设置会话JSESSIONID以便后续请求将根据请求标头中存在的 cookie 进行身
  • 如何删除 HTML 标题元素之间的行距?

    我有这个代码 h1 Something h1 h3 Somethings h3 h3 Some other things h3 我认为 HTML 会自动在它们之间添加 1 行间距 我希望它们没有 1 行间距 我的意思是逐行 而不是行间距 我
  • 如何在 Windows 服务器上安装 mongrel/rails 的 service_wrapper?

    我接到了一项令人不快的任务 要安装我在 Windows Server 2008 上编写的 Rails 3 应用程序 这绝对不是我的选择 承诺提供 Linux 服务器 但 I T 在最后一刻撤回了 所以请不要建议进行更改 环境作为解决方案 我
  • Python3 urllib图像检索

    我正在编写一个小的 Python 脚本来通过谷歌图像抓取图像 我已经成功地将我想要的图像的网址放在一个方便的列表中 现在 我只需要抓住它们 对于每个图像网址我这样做 print Retrieving 0 format sFinalImage
  • 您无权访问此服务器上的 /wp-admin/post.php。 Wordpress

    该问题已编辑 3 次 现在包含 VPS 和 Centos 标签 因为我认为我的 VPS 配置文件有问题 好的 首先 我已经浏览了这里提出的所有问题 但我遇到的问题没有答案 问题是 当我尝试复制 粘贴并更新或创建 WP 帖子时 我收到以下警告
  • Java servlet 不写入响应字节

    我运行了一些 Java servlet 3 x Tomcat 8 用于生成和返回 PDF 文档 我对它们中的任何一个都没有遇到过任何问题 我最近编写了一个新的 servlet 来创建和返回 PDF 文档 这个新的 servlet 使用完全一
  • 检查term是否存在并创建带有规则的节点

    我实际上有两个关于 Drupal 7 和规则的问题 如何检查某个术语是否存在规则 如何新建一个节点并用规则转发到节点条目 让我先概述一下场景 然后再详细解释 我目前正在创建一个简单的库存程序 与条形码扫描仪一起使用 条形码存储在分类树中 我
  • 来自字符串变量的 React Native 渲染组件

    或者也许问题应该是 如何将字符串转换为 JSX 无论如何 我试图对我的 React Native 应用程序进行性能黑客攻击 这需要我从字符串变量渲染 React Native 组件 例如 let item
  • Chartjs如何在动画后应用

    尝试扩展图表 以便我可以绘制线条直到数据点 但这是在默认动画之前发生的 如果之后涂抹的话会看起来更光滑 我已经完成了大部分工作 但是我如何在图表动画之后应用它 var originalLineDraw Chart controllers l