我正在使用chart.js在react中创建线条图。我必须显示日期、月份和年份的数据。对于那天我有不同的标签和数据,对于月份我有不同的标签和数据,而对于这一年,我也有不同的标签和数据。我能够添加多个数据集,而且它工作得很好,但是当我尝试添加多个标签时,它没有工作。请帮帮忙。这是我的密码。
实时代码演示:https://codesandbox.io/s/objective-bird-8owf1
import {Line} from 'react-chartjs-2';
const checkinsData={
labels:['4 P.M','5 P.M','6 P.M','7 P.M','8 P.M','9 P.M','10 P.M','11 P.M','12 A.M','1 A.M','2 A.M','3 A.M','4 A.M'],
datasets:[
{
label:"Day",
backgroundColor:"blue",
borderColor:'#333',
borderWidth:2,
lineTension:0.1,
fill:true,
data:[4,5,6,7,8,9,10,11,12,1,2,3,4]
},
{
label:"Week",
backgroundColor:"green",
borderColor:'#333',
borderWidth:2,
lineTension:0.1,
fill:true,
labels:['Sun','Mon','Tue','Web','Thu','Fri','Sat'],
data:[1,2,3,4,5,6,7]
},
{
label:"Month",
backgroundColor:"red",
borderColor:'#333',
borderWidth:2,
lineTension:0.1,
fill:true,
labels:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
data:[1,2,3,4,5,6,7,8,9,10,11,12]
}
]
}<div className="col-md-8 default-shadow bg-white pd-30-0 border-radius-10 align-center">
<Line
data={checkinsData}
options={
{
title:{
text:'Total Check-ins',
fontSize:20,
display:true
},
legend:{
display:true,
position:'top'
}
}
}
/>
</div>发布于 2020-04-02 05:02:02
以下是以下问题的工作代码。我使用了一个标签集,并在按钮单击更新它。类似地,我更新了数据集。
import React from 'react';
import {Line} from 'react-chartjs-2';
const checkinsData={
labels:['4 P.M','5 P.M','6 P.M','7 P.M','8 P.M','9 P.M','10 P.M','11 P.M','12 A.M','1 A.M','2 A.M','3 A.M','4 A.M'],
datasets:[
{
label:"Day",
backgroundColor:"blue",
borderColor:'#333',
borderWidth:2,
lineTension:0.1,
fill:true,
data:[4,5,6,7,8,9,10,11,12,1,2,3,4]
}
]
}
class CheckinGraph extends React.Component{
constructor(props)
{
super(props)
this.state={
key: Date.now()
}
this.setDayData=this.setDayData.bind(this);
this.setWeekData=this.setWeekData.bind(this);
this.setMonthData=this.setMonthData.bind(this);
}
setDayData=function() {
checkinsData.datasets.backgroundColor="blue";
checkinsData.labels=['4 P.M','5 P.M','6 P.M','7 P.M','8 P.M','9 P.M','10 P.M','11 P.M','12 A.M','1 A.M','2 A.M','3 A.M','4 A.M'];
checkinsData.datasets[0].data=[4,5,6,7,8,9,10,11,12,1,2,3,4];
this.setState({ key: Date.now() });
}
setWeekData=function()
{
checkinsData.datasets.backgroundColor="green";
checkinsData.labels=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
checkinsData.datasets[0].data=[40,50,16,18,80,29,10];
this.setState({ key: Date.now() });
}
setMonthData=function()
{
checkinsData.datasets.backgroundColor="purple";
checkinsData.labels=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
checkinsData.datasets[0].data=[100,120,200,256,560,178,280,190,370,100,300,200];
this.setState({ key: Date.now() });
}
render()
{
return(
<div className="col-md-12 default-shadow bg-white pd-30-0 border-radius-10 align-center">
<ul className="list list-inline graph-label-list">
<li className="list-inline-item" onClick={this.setDayData}>
Day
</li>
<li className="list-inline-item" onClick={this.setWeekData}>
Week
</li>
<li className="list-inline-item" onClick={this.setMonthData}>
Month
</li>
</ul>
<Line
redraw
data={checkinsData}
options={
{
title:{
display:false
},
legend:{
display:false
}
}
}
/>
</div>
)
}
}
export default CheckinGraph;发布于 2020-03-31 10:13:36
你的x轴应该是恒定的。所以你不能有超过一种数据在那里。在您的情况下,您需要的时间,周,日和月名称在x轴同时,这是不可能在单一的图形。您可以生成三个图,也可以通过触发事件(如单击等)在同一图形上填充不同的数据集。
我的意思是,当单击“日期”按钮时,日的数据集将填充标签,“下午4点”、“下午5点”、“下午6点”,当单击月份时,应该填充带有标签'jan‘、'feb'等的月份数据。
发布于 2020-03-30 10:06:27
你错误地列出了“军”,请在使用引号时保持一致。只需将“军”改为“军”,一切都会正常工作。
奖励,请查找一些编码样式:
谷歌JavaScript风格指南,Airbnb JavaScript风格指南等。
https://stackoverflow.com/questions/60926180
复制相似问题