x轴上的Chart.js v3.x时间序列
所以我基本上是在拉扯我的头发,因为我不能让它连续工作几个小时 我试着做一个(我假设是简单的)线图,在x轴上以小时为单位,在y轴上以视图数为单位。到目前为止,我一直试图将x轴范围设置为-24小时 我的代码如下。我做错了什么x轴上的Chart.js v3.x时间序列,chart.js,Chart.js,所以我基本上是在拉扯我的头发,因为我不能让它连续工作几个小时 我试着做一个(我假设是简单的)线图,在x轴上以小时为单位,在y轴上以视图数为单位。到目前为止,我一直试图将x轴范围设置为-24小时 我的代码如下。我做错了什么 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.bundle.min.js"></script>
<div style="width: 500px; height: 500px;"><canvas id="myChart" width="400" height="400"></canvas></div>
<script>
var ctx = document.getElementById('myChart');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: [],
datasets: [{
label: '# of Votes',
data: [{x:'1619701200',y:41},{x:'1619704800',y:9},{x:'1619708400',y:21}]
}]
},
options: {
scales: {
x: {
type: 'time',
min: Date.now() - (24 * 60 * 60 * 1000),
max: Date.now()
}
}
}
});
</script>
var ctx=document.getElementById('myChart');
var myChart=新图表(ctx{
键入:“行”,
数据:{
标签:[],
数据集:[{
标签:“#投票数”,
数据:[{x:'1619701200',y:41},{x:'1619704800',y:9},{x:'1619708400',y:21}]
}]
},
选项:{
比例:{
x:{
键入:“时间”,
最小值:Date.now()-(24*60*60*1000),
马克斯:日期。现在()
}
}
}
});
编辑:问题是x轴没有延伸到现在()之前的24小时。此外,数据集中有3个值,但仅显示两个值。您甚至可以根据需要编辑x值,并且整个图形保持不变
EDIT2:
有人能帮我把这个弄对吗?我已将数据粘贴到下面:
我正在努力实现的目标:
<div style="width: 500px; height: 500px;"><canvas id="myChart" width="400" height="400"></canvas></div>
<script>
new Chart(document.getElementById("myChart"), {
type: 'line',
data: {
labels: ['1619701200','1619704800','1619708400','1619715600','1619719200','1619722800','1619726400','1619730000','1619733600','1619737200','1619744400','1619773200','1619780400','1619784000','1619787600','1619791200','1619794800','1619798400','1619802000','1619809200','1619812800','1619816400','1619820000','1619823600','1619856000'],
datasets: [{
data: [41,9,21,80,277,151,68,88,82,48,12,1,97,36,81,21,63,49,44,15,10,44,81,4,9],
label: "Views",
borderColor: "#3e95cd",
fill: false
},
{
data: [1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1],
label: "Visitors",
borderColor: "#3e95cd",
fill: false
}
]
}
</script>
新图表(document.getElementById(“myChart”){
键入:“行”,
数据:{
标签:['1619701200'、'1619704800'、'1619708400'、'1619715600'、'1619719200'、'1619722800'、'1619726400'、'1619730000'、'1619733600'、'1619737200'、'1619744400'、'1619773200'、'1619780400'、'1619784000'、'1619787600'、'1619791200'、'1619794800'、'161979898400'、'161989200'、'1619812800'、'1619856000'、',
数据集:[{
数据:[41,9,21,80277151,68,88,82,48,12,1,97,36,81,21,63,49,44,15,10,44,81,4,9],
标签:“视图”,
边框颜色:“3e95cd”,
填充:假
},
{
数据:[1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1],
标签:“访客”,
边框颜色:“3e95cd”,
填充:假
}
]
}
它需要更多的设置,我已经搜索过了,通过尝试/错误-归功于此-这些是结果
见:
/*
资料来源:https://jsfiddle.net/microMerlin/3wfoL7jc/
*/
var ctx=document.getElementById('myChart');
var myChart=新图表(ctx{
键入:“行”,
数据:{
数据集:[{
标签:“#投票数”,
数据:[{
x:'1619701200',
y:41
}, {
x:'1619704800',
y:9
}, {
x:'1619708400',
y:21
}]
}]
},
选项:{
回答:是的,
比例:{
xAxes:[{
最小值:Date.now()-(24*60*60*1000),
max:Date.now(),
类型:“线性”,
位置:“底部”,
//对,,
滴答声:{
//贝吉纳泽罗:是的,
userCallback:函数(t,i){
/*log(“t:+t.toString());
log(“i:+i.toString())*/
返回i;
}
}
}]
}
}
});
我们希望您保留您的头发:-) 对于最新版本的
Chart.js
Chart.js
v3.2.1(与v2.xx不向后兼容)
备选案文1:
//获取Chart.js的最新版本,现在是v3.2.1
//您需要moment.js和适配器才能使time或timeseries在x轴上工作
const startDate=新日期(1619701200*1000);
//数据中的第一个标签,乘以1000得到毫秒,
//从现在开始的最后24小时,请参阅下面的进一步内容
常量myLabels=[];
让nextHour=开始日期;
让i=0;//提示:在for循环外部声明i以获得更好的性能
对于(i;i<24;i++){
nextHour=新日期((1619701200+(i*3600))*1000);
myLabels.push(下一步);
};
const ctx=document.querySelector('canvas').getContext('2d');
const myChart3x=新图表(ctx{
键入:“行”,
数据:{
标签:myLabels,
数据集:[{
数据:[41,9,21,80277151,68,88,82,48,12,1,97,36,81,21,63,49,44,15,10,44,81,4,9],
标签:“视图”,
边框颜色:“3e95cd”,
填充:假
},
{
数据:[1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1],
标签:“访客”,
边框颜色:“3e95cd”,
填充:假
}
]
},
选项:{
比例:{
x:{
键入:“timeseries”,
时间:{
单位:'小时',//我复制/粘贴了你的代码以创建一个,我看不到任何错误-,你能回答你的问题并解释你面临的问题和想要的结果吗?你真是天赐良机!!谢谢你MUCH@B.Smit谢谢你的评论-我很高兴它解决了你的问题。你在解释问题、添加编辑等方面付出了巨大的努力。。因此,你应该在回答问题时付出同样的努力。