javascript - chart.js:连接两个折线图的问题
问题描述
我正在尝试更改 chart.js 中折线图一部分的颜色。我关注了这些帖子:
和
我接近实现正确的结果,但是,第二行不想从第一行的末尾开始。
这是有问题的代码:
var myChart5 = new Chart(ctx5, {
type: 'line',
data: {
labels: document.getElementById('tag4').textContent == 'ITEMS IN DIFFICULTY' ?
['90 days backward','60 days backward','30 days backward','30 days forward'] :
['90 days backward','60 days backward','30 days backward','30 days forward'],
datasets: [{
labels: labels8,
data: defaultData8,
fill: true,
backgroundColor: ['rgba(54, 162, 235, 0.2)'],
borderColor: ['rgba(255, 99, 132, 1)'],
borderWidth: 1
}, {
label: labels18,
data: defaultData18,
fill: true,
backgroundColor: ['rgba(255, 99, 132, 0.2)'],
borderColor: ['rgba(255, 99, 132, 1)'],
borderWidth: 1
}],
options: {
scales: {
yAxes: [{
scaleLabel: {
display: true,
labelString: 'Quantity Sold'
},
ticks: {
min: 0
}
}]
}
}
}
});
这是数据的样子:
"labels8": [
"90_days_backward",
"60_days_backward",
"30_days_backward"
],
"default8": [
129259.0,
149651.0,
70699.0
],
"labels18": [
"30_days_backward",
"30_days_forward"
],
"default18": [
70699.0,
109145.6
]
我对如何进行有点困惑,我尝试在第二个数据集中包含“NaN”值来推动它前进,但它不会成功。有人会知道如何解决这个问题吗?
解决方案
为了让第二行从第一行的末尾开始,它的数据数组需要跳过这些值。您可以做的是用与null
第一个数组的值一样多的次数填充第二个数组。
在上面粘贴的图表配置中,在第二个数据集中,您可以通过以下方式分配data
属性:
// to start right after the end of the previous line
data: defaultData8.slice().fill(null).concat(defaultData18)
// to start on top of the end of the previous line
data: defaultData8.slice(1).fill(null).concat(defaultData18)
这将复制第一个数据数组(也保持原始数据不变),用 覆盖其所有值null
,将其与第二个类似数据连接,然后将其分配给data
第二个数据集的属性。
推荐阅读
- sql-server - 尝试在 where 子句中使用使用动态值创建的列但出现错误
- javascript - CryptJS PyCryptoDome - JS 端 AES 解密不可能
- reactjs - 如何保持在同一页面上并在 React js 中呈现不同的组件
- django - Pipenv shell 无法在 Python 3.8 中创建虚拟环境
- sql - 约会时间!从字符串转换日期和/或时间时转换失败
- html - 如何使用 strtok() 从 c 中的 QUERY_STRING 中提取部分?
- c++ - 我们在批处理模式下使用 g++ 时出错
- webpack - 如何在require.context之后和加载程序之前将scss文件合并为一个,而不是在其中使用@import?
- java - Java DrawRect 问题
- github - 使用 Git API 获取目录和子目录的列表