javascript - ChartJs : Different Fill Colour Between Data Points

标签 javascript charts chart.js

我正在尝试更改几个数据点之间的填充颜色,例如1,2 点之间为黑色,3-5 点之间为红色。

一个例子是 amCharts:http://www.amcharts.com/demos/line-with-changing-color/

我曾尝试更改点的 fillColor 属性,但似乎所做的只是更改点的填充颜色。

var chart = new Chart(ctx).LineWithLine(data, options);

chart.datasets[0].points[0].fillColor = "purple";
chart.datasets[0].points[1].fillColor = "purple";
chart.datasets[0].points[2].fillColor = "purple";
chart.update();

但是,如果我更改选项中的填充颜色,我会看到图表的填充颜色按预期更改。我使用了错误的属性还是库中存在错误?

JS fiddle :https://jsfiddle.net/hdnu4bpa/

邮寄:This question只改变点的颜色,这不是我想要的。

最佳答案

填充颜色适用于整个系列,而不适用于点之间的区域。

但是,由于您没有工具提示(您将 tooltipEvents 设置为空数组),您可以使用 3 个不同的系列以及 Chart.js 不绘制空值这一事实来实现您想要的。


一条线的不同填充颜色

这是它的样子

enter image description here

我们制作了 3 个系列(如果您的数据和范围是动态的,您可以通过编程方式执行此操作 - 虽然这更像是一个 JavaScript 问题而不是 Chart.js 问题)

var data = {
    labels: ["-2h", "-10m", "-7m", "-2m", "-5s"],
    datasets: [{
        data: [12.5, 3.1, null, null, null],
        fillColor: "rgba(151,205,187,0.2)",
        strokeColor: "rgba(151,205,187,1)",
        pointColor: "rgba(151,205,187,1)",
        pointStrokeColor: "#fff",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(151,205,187,1)",
    }, {
        data: [null, 3.1, 3.3, 4.2, null],
        fillColor: "rgba(151,187,205,0.2)",
        strokeColor: "rgba(151,187,205,1)",
        pointColor: "rgba(151,187,205,1)",
        pointStrokeColor: "#fff",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(151,187,205,1)",
    }, {
        data: [null, null, null, 4.2, 15.5],
        fillColor: "rgba(205,151,187,0.2)",
        strokeColor: "rgba(205,151,187,1)",
        pointColor: "rgba(205,151,187,1)",
        pointStrokeColor: "#fff",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(205,151,187,1)",
    }
    ]
};

var ctx = document.getElementById("myChart").getContext("2d");
var options = {
   showTooltips: false,
   datasetFill: true,
}

var chart = new Chart(ctx).Line(data, options);

我刚刚改编了您的 fiddle 中的代码以显示相关位(它与您的 LineWithLine 扩展同样有效)

如果您希望某种颜色出现在交叉点的顶部(数据中的 -10m 和 -2m),您可以重新排列系列。后面系列的颜色优先。


fiddle - https://jsfiddle.net/kurtybra/

关于javascript - ChartJs : Different Fill Colour Between Data Points,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33793675/

相关文章:

javascript - 如何使用 Javascript 平滑地平移内联 SVG

javascript - 使用 Chart.js 和 mySQL 绘制饼图

javascript - 我的饼图(chartJs)没有出现

javascript - 脚本错误 : The script completed but the returned value is not a supported return type

javascript - 为什么复选框验证在 Parsley.js 中不起作用?

javascript - 如何将我的鼠标指针包含在 Canvas /div 中?

javascript - D3垂直条形图为标签文本添加换行符

javascript - 最后一个价格变动未显示在 d3 图表中

charts - 通过选择触发谷歌时间线工具提示

javascript - iPad 上的曲线颜色是深灰色,而不是红色。如何解决这个问题?