Chartjs - pointColor 跟随渐变描边的当前颜色

2023-12-30

我刚刚使用创建折线图chartjs http://www.chartjs.org/图书馆和我设法用渐变颜色进行描边。这里很简单fiddle http://jsfiddle.net/jvmk5o6a/例如我到目前为止所做的事情。

接下来我需要做的是pointColor遵循梯度stroke并获取其位置的当前颜色。就像这个photo https://d13yacurqjgara.cloudfront.net/users/309045/screenshots/1659000/04-sparkline_1x.jpg.

有什么想法如何实现这一目标吗?

Thanks!


Update

来自 @AndyHolmes 的问题是否可以向 Chart.js 折线图添加阴影? https://stackoverflow.com/questions/33104231/is-it-possible-to-add-a-drop-shadow-to-chart-js-line-chart

不需要原始解决方案(扩展)。所需要的只是

  ...
  pointColor: gradientstroke
  ...

原创解决方案

只需延长线并更新点颜色即可。您可以在绘制函数中执行此操作,但在初始化函数中执行此操作会更有效(当启用动画时)

Chart.types.Line.extend({
    name: "LineAlt",
    initialize: function (data) {
        Chart.types.Line.prototype.initialize.apply(this, arguments);

        var ctx = this.chart.ctx;
        // draw a line with the gradient, we use this to get each points color
        ctx.fillStyle = data.datasets[0].strokeColor;
        ctx.fillRect(0, 0, this.chart.width, 1);

        this.datasets.forEach(function (dataset) {
            dataset.points.forEach(function (point) {
                // get the color from the gradient drew above
                var imageData = ctx.getImageData(point.x, 0, 1, 1);
                var color = 'rgba(' + imageData.data[0] + ', ' + imageData.data[1] + ', ' + imageData.data[2] + ', ' + imageData.data[3] + ')';

                // the _saved is used by the tooltip refresh to draw the point when you mouseout
                point.fillColor = color;
                point._saved.fillColor = color;
                point.strokeColor = color;
                point._saved.strokeColor = color;
            })
        })

        // we need to call the render function again to overwrite what was drawn in the initialize render (otherwise we don't see the changed color when animation is false)
        // this also wipes out the reference gradient
        this.render();
    }
});

lineChartData 中的 pointColor 和 pointStrokeColor 实际上不是必需的。请注意,如果您愿意,您还可以以相同的方式覆盖 pointHighlightStroke 和 pointHighlightFill。

你这样称呼它

new Chart(ctx).LineAlt(...

小提琴 -http://jsfiddle.net/w2nh153d/ http://jsfiddle.net/w2nh153d/


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

Chartjs - pointColor 跟随渐变描边的当前颜色 的相关文章

随机推荐

  • 如何对“新风格”Django 中间件进行单元测试

    我正在学习如何对 Django 中间件进行单元测试 在 旧式 中间件中 使用以下命令加载中间件非常容易process request 测试结果 例如 def test session self request self factory ge
  • 衍生品警告没有意义

    我收到以下形式的警告 DerivativesWarning Constraints or objectives traj linkages stage 1 grav turn alpha final coast 1 alpha initia
  • 错误显示:dyld_sim 与加载的进程不兼容

    我有一个 iPhone 中运行的应用程序的源代码 适用于 iOS 7 及之前的操作系统 但 iOS 8 0 及更高版本不支持该应用程序 当我尝试编译代码时 它可以正常执行所有文件 但会引发体系结构不匹配错误 在控制台中 dyld dyld
  • 如何更改查询以仅保留叶节点

    我有包含以下数据的表 id parent id short name 6 5 cpu 7 5 ram 14 9 tier a 15 9 rfc1918 16 9 tolerant 17 9 nononymous 13 12 cloudsta
  • HTTPServletRequest getParameterMap() 与 getParameterNames

    HTTPServletRequestreq 有一个方法getParameterMap 但是 这些值返回一个String 代替String 对于发布数据为 姓名 玛丽 姓氏 约翰 年龄 20 我在帖子数据中看到它不是一个数组 但是getPar
  • AngularJS 根据用户输入切换样式表

    如何根据用户单击的按钮来切换 切换 AngularJS 页面的样式表 您实际上可以在 html 级别放置一个控制器并修改link标签的href Demo http plnkr co edit jBtP6FfmeRzOYUCnHg3t p p
  • 如何检测通知/系统栏何时打开

    我需要知道系统 通知栏何时在我的应用程序中打开 但我找不到任何真正的解决方案 所以我将一些东西组合在一起 看起来效果很好 在详细介绍实现之前 我将简要解释一下我的 非常老套的 逻辑 当某个 Activity 由于任何原因不再对用户可见时 将
  • xtensor 类型与 NumPy 简单归约的性能对比

    我正在尝试xtensor python https github com QuantStack xtensor python并开始编写一个非常简单的求和函数 之后使用千篇一律的设置 https github com QuantStack x
  • TypeORM - 如何在生产模式下创建新表并自动运行迁移?

    我想在 MySQL 中创建新表 并在应用程序在生产模式下运行时自动运行 TypeORM 迁移 注意 此新表不是在生产模式下启动应用程序之前创建的 根据迁移文档 https github com typeorm typeorm blob ma
  • 在Jupyter中逐步执行算法

    我试图一步步展示 Jupyter 中 Python 程序的执行情况 例如 我可以将程序中变量的值可视化 如以下玩具程序所示 from IPython display import display clear output from time
  • 如何在 pygtk 中使用线程

    我在 pygtk 中遇到线程问题 我的应用程序包含一个从互联网下载图片然后用 pygtk 显示它的程序 问题是 为了做到这一点并保持 GUI 响应能力 我需要使用线程 因此 在用户单击 下载图片 按钮后 我进入回调 并调用该方法来下载同一类
  • 将 CV_32FC1 类型的矩阵转换为 CV_64FC1

    如何将 CV 32FC1 类型的 cv Mat 转换为 CV 64FC1 类型 相当于从 float 变为 double 我正在打开一个保存为 XML 的矩阵 cvSave 但作为浮动 这意味着该领域 dt 有价值f在文件中 我需要将其更改
  • 在函数内修改Python中的全局字典

    usr bin env python def modify dict d two 2 d one 1 modify dict print d I get globaltest py two 2 one 1 我本来希望只看到 one 1 因为
  • Matlab:xcorr一维互相关归一化问题

    我有一个长度 5 的参考信号 s1 和另一个长度 25 个样本的信号 s2 包含相同 5 个样本信号 s1 的移位版本 我想找到两个信号之间的归一化互相关性 以计算信号 s1 和 s2 之间的样本距离 延迟 滞后 我用零填充 s1 因此它与
  • 什么时候是使用反引号的正确时间(和错误时间)?

    许多初学者都会写这样的代码 sub copy file my from shift my to shift cp from to 这很糟糕吗 为什么 应该使用反引号吗 如果是这样 怎么办 有些人已经提到 您应该只在以下情况下使用反引号 您需
  • 如何从 YYYY-MM-dd'T'HH:mm:ss.sssZ 获取时间

    嗨 我想抽出时间11 40 from 2017 07 31T11 40 00 000Z 下面是我正在使用的代码 let formatter Foundation DateFormatter formatter dateFormat YYYY
  • 在 C# 中的方法参数中使用“class”关键字

    我不确定我在哪里看到这个 而且我当然没有让编译器通过语法 是否可以使用 class C 关键字作为方法参数签名的一部分 foo 字符串 x 类 y 还有其他人看到这样的事情吗 谢谢 基因 你应该使用对象吗 看起来您正在尝试指定一个可以具有任
  • 将单个应用程序显示导出到 VNC

    我正在寻找一个脚本 解决方案来将单个 Linux 应用程序显示导出到 VNC 例如 客户端浏览网页 它需要身份验证 基本用户名密码 通过身份验证后 他会看到一个带有不同按钮的页面 每个按钮都与一个应用程序相关 例如 单击 firefox 按
  • 在views.py中使用Django模型表单时出现错误

    在我的 models py 中 class Alert models Model user models CharField max length 30 blank True a models IntegerField blank True
  • Chartjs - pointColor 跟随渐变描边的当前颜色

    我刚刚使用创建折线图chartjs http www chartjs org 图书馆和我设法用渐变颜色进行描边 这里很简单fiddle http jsfiddle net jvmk5o6a 例如我到目前为止所做的事情 接下来我需要做的是po