Javascript 图表-按时间筛选的谷歌图表

Javascript 图表-按时间筛选的谷歌图表,javascript,charts,google-visualization,Javascript,Charts,Google Visualization,我想做一个折线图,它表示几个动作,在该动作的一段时间内累积了几天的值 此图形将有一个过滤器,它将按天/周/月进行过滤 在开始时,我将date列设置为type string,如果只有一个操作可以工作,但是如果有多个操作并且同时启动,它会复制这些点,这是不应该的 因此,我将date列设置为date,它解决了不复制积分的问题,问题是当我将过滤器应用于周和月时,它将被写为“week 24”或month name,重复的积分返回 任何建议 例- 白天 周 月 让数据=[ ['2018-06-01',1

我想做一个折线图,它表示几个动作,在该动作的一段时间内累积了几天的值

此图形将有一个过滤器,它将按天/周/月进行过滤

在开始时,我将date列设置为type string,如果只有一个操作可以工作,但是如果有多个操作并且同时启动,它会复制这些点,这是不应该的

因此,我将date列设置为date,它解决了不复制积分的问题,问题是当我将过滤器应用于周和月时,它将被写为“week 24”或month name,重复的积分返回

任何建议

例-


白天
周
月
让数据=[
['2018-06-01',1,空],
[2018-06-02',2,空],
[2018-06-03',3,空],
[2018-06-04',4,空],
['2018-06-05',5,空],
[2018-06-06',6,空],
[2018-06-07',7,空],
[2018-06-08',8,空],
[2018-06-09',9,空],
['2018-06-06',空,20],
[2018-06-07',空,30],
['2018-06-08',空,40],
['2018-06-09',空,50],
['2018-06-10',空,60],
['2018-06-11',空,70],
[2018-06-12',空,80],
['2018-06-13',空,90],
['2018-06-14',空,100]
];
让dataChart=[];
函数过滤器(格式){
数据图表=[];
让lastDate='';
设值=0;
[]forEach.call(数据,(d,i)=>{
设日期=时刻(d[0],'YYYY-MM-DD')。格式(格式);
如果(i==0)
lastDate=日期;
如果(lastDate==日期){
值+=(d[1]!==null)?d[1]:d[2];
}否则{
dataChart.push([date,d[1],d[2]]);
lastDate=日期;
值=(d[1]!==null)?d[1]:d[2];
}
if(i==data.length-1)dataChart.push([date,d[1],d[2]]);
}); 
load('current',{packages:['corechart']});
google.charts.setOnLoadCallback(drawChart);
}
过滤器(“DD-M”);
函数绘图图(){
var chart=new google.visualization.DataTable();
chart.addColumn('string','date');
chart.addColumn('number','action1');
chart.addColumn('number','action2');
chart.addRows(数据图表)
让container=document.getElementById('chart_div');
让dChart=newgoogle.visualization.LineChart(容器);
dChart.绘图(图表);
}
问题 “…如果你只有一个动作有效,但如果你有多个动作,如果它同时开始,它会复制那些不应该复制的点。”


解决

数组
数据
数据数组有重复的日期,因此重复的点是不可避免的

比较原始值…

let data = [
      ['2018-06-01', 1, null],
      ['2018-06-02', 2, null],
      ['2018-06-03', 3, null],
      ['2018-06-04', 4, null],
      ['2018-06-05', 5, null],
      ['2018-06-06', 6, null],// Duplicated Pair A
      ['2018-06-07', 7, null],// Duplicated Pair B
      ['2018-06-08', 8, null],// Duplicated Pair C
      ['2018-06-09', 9, null],// Duplicated Pair D
      ['2018-06-06', null, 20],// Duplicated Pair A
      ['2018-06-07', null, 30],// Duplicated Pair B
      ['2018-06-08', null, 40],// Duplicated Pair C
      ['2018-06-09', null, 50],// Duplicated Pair D
      ['2018-06-10', null, 60],
      ['2018-06-11', null, 70],
      ['2018-06-12', null, 80],
      ['2018-06-13', null, 90],
      ['2018-06-14', null, 100]
];
…调整到校正值

  let data = [
    ['2018-06-01', 1, null],
    ['2018-06-02', 2, null],
    ['2018-06-03', 3, null],
    ['2018-06-04', 4, null],
    ['2018-06-05', 5, null],
    ['2018-06-06', 6, 20],
    ['2018-06-07', 7, 30],
    ['2018-06-08', 8, 40],
    ['2018-06-09', 9, 50],
    ['2018-06-10', null, 60],
    ['2018-06-11', null, 70],
    ['2018-06-12', null, 80],
    ['2018-06-13', null, 90],
    ['2018-06-14', null, 100]
  ];

一次性
.length
以下条件:

if (i === data.length - 1) dataChart.push([date, d[1], d[2]]);
if (i === data.length) dataChart.push([date, d[1], d[2]]);
 if (lastDate === date) {
  if (lastDate === date-1) {
正在
haxis
(x或水平轴)的末尾创建重复的一天,其中最后两列都是:
14-6

要更正列重复,请从
.length
中删除
-1

if (i === data.length - 1) dataChart.push([date, d[1], d[2]]);
if (i === data.length) dataChart.push([date, d[1], d[2]]);
 if (lastDate === date) {
  if (lastDate === date-1) {

一次性
日期
以下条件:

if (i === data.length - 1) dataChart.push([date, d[1], d[2]]);
if (i === data.length) dataChart.push([date, d[1], d[2]]);
 if (lastDate === date) {
  if (lastDate === date-1) {
导致
haxis
跳过第一列,使其从
02-6
开始,而不是
01-6

若要添加缺少的第一列,请将
-1
添加到
日期
值:

if (i === data.length - 1) dataChart.push([date, d[1], d[2]]);
if (i === data.length) dataChart.push([date, d[1], d[2]]);
 if (lastDate === date) {
  if (lastDate === date-1) {

演示

白天
周
月
让数据=[
['2018-06-01',1,空],
[2018-06-02',2,空],
[2018-06-03',3,空],
[2018-06-04',4,空],
['2018-06-05',5,空],
['2018-06-06', 6, 20],
['2018-06-07', 7, 30],
['2018-06-08', 8, 40],
['2018-06-09', 9, 50],
['2018-06-10',空,60],
['2018-06-11',空,70],
[2018-06-12',空,80],
['2018-06-13',空,90],
['2018-06-14',空,100]
];
让dataChart=[];
函数过滤器(格式){
数据图表=[];
让lastDate='';
设值=0;
[]forEach.call(数据,(d,i)=>{
设日期=时刻(d[0],'YYYY-MM-DD')。格式(格式);
如果(i==0)
lastDate=日期;
如果(lastDate==日期-1){
值+=(d[1]!==null)?d[1]:d[2];
}否则{
dataChart.push([date,d[1],d[2]]);
lastDate=日期;
值=(d[1]!==null)?d[1]:d[2];
}
if(i==data.length)dataChart.push([date,d[1],d[2]]);
});
load('current',{packages:['corechart']});
google.charts.setOnLoadCallback(drawChart);
}
过滤器(“DD-M”);
函数绘图图(){
var chart=new google.visualization.DataTable();
chart.addColumn('string','Date');
chart.addColumn('number','Action1');
chart.addColumn('number','Action2');
chart.addRows(数据图表)
让container=document.getElementById('chart_div');
让dChart=newgoogle.visualization.LineChart(容器);
dChart.绘图(图表);
}