我想在图表中显示我的数据(chart.js)
我找到了一个在线生成器工具并复制了代码。
如果我使用“硬编码”的时间值,它的工作(几乎)正确。(有第二个轴,我不想要,但不知道如何删除。)
但是如果我使用变量“globalDate”中的时间数据,一切都会出错,只有一个数据点显示出来。
HTML文档:
头标内:
<script src="https://cdn.jsdelivr.net/npm/chart.js/dist/chart.umd.min.js"></script>
<script>
function DrawTheChart(ChartData,ChartOptions,ChartId,ChartType){
eval('var myLine = new Chart(document.getElementById(ChartId).getContext("2d"),{type:"'+ChartType+
'",data:ChartData,options:ChartOptions});document.getElementById(ChartId).getContext("2d").stroke();')
}
</script>
在主体-标记中:
<canvas id="chart-01" width="600" height="400" style="background-color:rgba(255,255,255,1.00);border:1px rgba(227,36,36,1) solid;border-radius:0px;width:600px;height:400px;padding-left:0px;padding-right:0px;padding-top:0px;padding-bottom:2px"></canvas>
请看“图表数据”。
<script>
function MoreChartOptions(){}
//Daten holen
console.log(globalDate);
console.log(globalValue);
var ChartData = {
labels : ["2023-03-25 10:00:00","2023-03-25 10:15:00","2023-03-25 10:30:00","2023-03-25 10:45:00","2023-03-25 11:00:00","2023-03-25 11:15:00","2023-03-25 11:30:00",],
//var ChartData = {
//labels : [globalDate],
datasets : [{
data : [25,28,3,4,5,6,7,],
//data : [globalValue],
backgroundColor :'#168af7',
borderColor : 'rgba(65,130,76,0.5)',
pointBackgroundColor:'#fad541',
pointBorderColor : '#050505',
label:"datensatz1"
}],
};
ChartOptions= {
responsive:false,
layout:{padding: 12},
scales: {
xAxes:{
gridLines:{borderDash:[],},
scaleLabel:{
display:true,
labelString:'Timeline',
fontColor:'#666666',
fontSize:8,
},
},
yAxes:{
gridLines:{borderDash:[],},
scaleLabel:{
display:true,
labelString:'temperature',
fontColor:'#666666',
fontSize:8,
},
},
},plugins:{
datalabels:{display:true,
align:'end',
offset:10,
font:{
size:10,
style:' bold',},},
},
legend:{
labels:{
usePointStyle:true,
generateLabels: function(chart){
return chart.data.datasets.map( function( dataset, i ){
return{
text:dataset.label,
lineCap:dataset.borderCapStyle,
lineDash:[],
lineDashOffset: 0,
lineJoin:dataset.borderJoinStyle,
pointStyle:'dash',
fillStyle:dataset.backgroundColor,
strokeStyle:dataset.backgroundColor,
lineWidth:dataset.pointBorderWidth,
lineDash:dataset.borderDash,
}
})
},
},
},
title:{
display:true,
text:'Chart Title',
fontColor:'#3498db',
fontSize:20,
fontStyle:' bold',
},
elements: {
arc: {
},
point: {radius:5,},
line: {tension:0.4,fill:false,
},
rectangle: {
},
},
tooltips:{
},
hover:{
mode:'nearest',
animationDuration:400,
},
};
DrawTheChart(ChartData,ChartOptions,"chart-01","line");
</script>
使用硬定义的“ChartData标签”,图表显示了点,但如果我使用数组,它就不起作用了。
hard defined labels
labels from variable
“globalDate”是这样填写的:
var globalDate = [];
var d = new Date(data[i].LogDate); //from JSON Input
globalDate.push(d.toISOString()); //d.toString());
我想我的数组中的日期格式有问题。
控制台输出(globalDate):
[]
0: "2023-03-24T15:34:12.000Z"
1: "2023-03-24T15:34:42.000Z"
2: "2023-03-24T15:35:12.000Z"
//and so on.
谢谢大家!
1条答案
按热度按时间bttbmeg01#
用我的简短例子让它工作起来了。之后就很容易使用JSON数据作为标签和数据点了...: