在这个draggable ChartJS demo中,是否可以沿着ChartJS绘制的曲线之沿着导出一组插值坐标?
var options = {
type: 'line',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
fill: true,
tension: 0.4,
borderWidth: 1,
pointHitRadius: 25
},
{
label: '# of Points',
data: [7, 11, 5, 8, 3, 7],
fill: true,
tension: 0.4,
borderWidth: 1,
pointHitRadius: 25
}
]
},
options: {
scales: {
y: {
min: 0,
max: 20
}
},
onHover: function(e) {
const point = e.chart.getElementsAtEventForMode(e, 'nearest', { intersect: true }, false)
if (point.length) e.native.target.style.cursor = 'grab'
else e.native.target.style.cursor = 'default'
},
plugins: {
dragData: {
round: 1,
showTooltip: true,
onDragStart: function(e, datasetIndex, index, value) {
// console.log(e)
},
onDrag: function(e, datasetIndex, index, value) {
e.target.style.cursor = 'grabbing'
// console.log(e, datasetIndex, index, value)
},
onDragEnd: function(e, datasetIndex, index, value) {
e.target.style.cursor = 'default'
// console.log(datasetIndex, index, value)
},
}
}
}
}
var ctx = document.getElementById('chartJSContainer').getContext('2d');
window.test = new Chart(ctx, options);
个字符
演示程序绘制了一个5个值的数组。
data: [12, 19, 3, 5, 2, 3],
型
有没有一种方法可以使用JavaScript生成一个10个y值的数组,其中x坐标沿曲线均匀分布沿着?
例如,如果画布宽度为200px,则x坐标将以20px
的值递增,y值将是贝塞尔曲线上的对应点。
I looked through the ChartJS API documentation,我没有看到一个API的贝塞尔曲线函数的每一个情节暴露,但也许有一种方法围绕这一点?
1条答案
按热度按时间ttcibm8c1#
根据您想要使用的内容,一个简单的变通方法/解决方案是:
labels
属性中填入所需的正确数量的单位,例如["Red", "Blue", "Yellow", "Green", "Purple", "Orange", "Blue", "Yellow", "Green", "Purple", "Green"]
labels
-数组的大小,如[7, null, 11, null, 5 , null, 8, null, 3, null, 7]
spanGaps: true
属性,以便chartjs将连接点。像这样的chartjs,填补了空白,您可以在图表中留出空间,而无需手动计算任何额外的值。
小Demo: