我正在使用Chart.js(2.0.2测试版)构建一个简单的折线图,我想突出显示图表背景的一个特定范围,以突出显示“可接受的范围”。
下面是一个我想通过Charts.js重新创建的示例:
如果有帮助的话,这是我目前为止的工作成果。这是相当初级的。任何正确方向的指导或推动都将不胜感激!
var bgdata = {
labels: ["12:00 AM", "1:00 AM", "2:00 AM", "3:00 AM", "4:00 AM", "5:00 AM", "6:00 AM", "7:00 AM", "8:00 AM", "9:00 AM", "10:00 AM", "11:00 AM", "12:00 PM", "1:00 PM", "2:00 PM", "3:00 PM", "4:00 PM", "5:00 PM", "6:00 PM", "7:00 PM", "8:00 PM", "9:00 PM", "10:00 PM", "11:00 PM"],
datasets: [
{
label: "Average Hourly Blood Glucose Reading",
fill: false,
backgroundColor: "rgba(29, 9, 158,0.2)",
borderColor: "rgba(29, 9, 158,1)",
data: [213, 199, 208, 191, 205, 181, 163, 133, 129, 186, 184, 137, 125, 126, 119, 120, 129, 133, 122, 156, 203, 207, 183, 211]
}
]
};
var bgChart = document.getElementById('bg').getContext('2d');
var bgLineChart = Chart.Line(bgChart, {
data: bgdata,
options: {
scaleFontSize: 12,
responsive: true,
scales: {
yAxes: [{
ticks: {min: 25, max: 250, stepSize: 25}
}],
},
title: {display: true, text: 'Average Hourly Blood Glucose'},
}});
6条答案
按热度按时间ejk8hzay1#
下面的代码实现了Chart.js 2.* 中所需的功能(使用Chart.js 2.1.4,这是编写本文时的最新版本):
https://jsfiddle.net/742zut83/22/
实作是以延伸折缐图类型和覆写
draw
函数为基础。新的draw
函数会检查折缐图的data
内是否存在下列项目,这些项目会定义要反白的y范围:如果不存在,则调用原来的
draw
函数,如果存在,则在指定的y范围内绘制一个从左向右的矩形,绘制完矩形后调用原来的draw
函数,完成折线图的绘制。第一个实现没有绘制矩形。它有其他缺陷,它单独绘制所有像素线。就像电视扫描线(是的,我老了)。但旧代码在这里(如果你关心线条绘制):
https://jsfiddle.net/742zut83/17/
当前代码如下:
第一个
vjrehmav2#
您可以使用chartjs-plugin-annotation(chartjs的官方版本)中的方框注解。指定
yMin
和yMax
,并保留xMin
和xMax
未定义,以便它填充整个x轴。示例代码:
第一个
dldeef673#
Chart.js v2.0.2不提供这种现成的功能。
不过,您可以扩充或建立新的型别建构函式。请参阅http://www.chartjs.org/docs/#advanced-usage-extending-existing-chart-types。
您应该能够实现一个由两条线包围的区域类型,或者创建一个类似于xnakos答案的阈值范围。
vfwfrxfs4#
这段代码会很有帮助
tquggr8v5#
最后我把@xnakos代码放在componentDidUpdate()回调函数中。这样做的好处是你不需要像ctx.fillStyle = 'rgba(0,255,0,0.3)'那样设置高亮区域的不透明度来显示图形,也不需要覆盖@xnakos answer中的填充方法。
并且数据对象如下,
zvms9eto6#
在Chart JS的最新版本中,您可以使用框注解。您可以在此处阅读有关它的更多信息:https://www.chartjs.org/chartjs-plugin-annotation/latest/guide/types/box.html