Rangefilter Google Charts in hours:minutes

Posted

技术标签:

【中文标题】Rangefilter Google Charts in hours:minutes【英文标题】: 【发布时间】:2017-10-31 10:38:34 【问题描述】:

下面是我的代码sn-p:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="//www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('visualization', '1',  packages : ['controls']  );
google.setOnLoadCallback(createTable);

function createTable() 
  // Create the dataset (DataTable)
  var myData = new google.visualization.DataTable();
  myData.addColumn('date', 'Date');
  myData.addColumn('number', 'Hours Worked');
  myData.addRows([
    [new Date(2014, 6, 12), 9],    
    [new Date(2014, 6, 13), 8],    
    [new Date(2014, 6, 14), 10],    
    [new Date(2014, 6, 15), 8],    
    [new Date(2014, 6, 16), 0]
  ]);

  // Create a dashboard.
  var dash_container = document.getElementById('dashboard_div'),
    myDashboard = new google.visualization.Dashboard(dash_container);

  // Create a date range slider
  var myDateSlider = new google.visualization.ControlWrapper(
    'controlType': 'ChartRangeFilter',
    'containerId': 'control_div',
    'options': 
      'filterColumnLabel': 'Date'
    
  );

  // Table visualization
  var myTable = new google.visualization.ChartWrapper(
    'chartType' : 'Table',
    'containerId' : 'table_div'
  );

  // Bind myTable to the dashboard, and to the controls
  // this will make sure our table is update when our date changes
  myDashboard.bind(myDateSlider, myTable);

  // Line chart visualization
  var myLine = new google.visualization.ChartWrapper(
    'chartType' : 'LineChart',
    'containerId' : 'line_div',
  );
  
  // Bind myLine to the dashboard, and to the controls
  // this will make sure our line chart is update when our date changes
  myDashboard.bind(myDateSlider, myLine );

  myDashboard.draw(myData);

</script>

<div id="dashboard_div">
  <div id="control_div"><!-- Controls renders here --></div>
  <div id="line_div"><!-- Line chart renders here --></div>
  <div id="table_div"><!-- Table renders here --></div>

  <div id="control_div"><!-- Controls renders here --></div>
  <div id="line_div"><!-- Line chart renders here --></div>
  <div id="table_div"><!-- Table renders here --></div>
</div>

le 将小时:分钟添加到 x 轴。例如:7 月 12 日。 2014 年 7 月 12 日 11:00 2014 年 7 月 12 日 11:02。 2014 11:04 etc..因为我只有一天的数据。

我已经尝试过使用纪元时间,但它仍然不显示 hh:mm 或显示错误的时间。

【问题讨论】:

【参考方案1】:

首先,在图表的 x 轴上包含 hours:minutes 并进行控制

使用hAxis.format 的选项

这个选项只接受一个格式字符串,例如

  hAxis: 
    format: 'dd MMM yyyy hh:mm'
  

在表格图表和折线图工具提示中包含 小时:分钟

使用DateFormat formatter 格式化数据表,例如

var formatDate = new google.visualization.DateFormat(
  pattern: 'dd MMM yyyy hh:mm'
);
formatDate.format(myData, 0);

请参阅以下工作 sn-p...

google.charts.load('current', 
  callback: createTable,
  packages: ['controls']
);

function createTable() 
  // Create the dataset (DataTable)
  var myData = new google.visualization.DataTable();
  myData.addColumn('date', 'Date');
  myData.addColumn('number', 'Hours Worked');
  myData.addRows([
    [new Date(2014, 6, 12), 9],
    [new Date(2014, 6, 13), 8],
    [new Date(2014, 6, 14), 10],
    [new Date(2014, 6, 15), 8],
    [new Date(2014, 6, 16), 0]
  ]);

  var formatPattern = 'dd MMM yyyy hh:mm';
  var formatDate = new google.visualization.DateFormat(
    pattern: formatPattern
  );
  formatDate.format(myData, 0);


  // Create a dashboard.
  var dash_container = document.getElementById('dashboard_div'),
    myDashboard = new google.visualization.Dashboard(dash_container);

  // Create a date range slider
  var myDateSlider = new google.visualization.ControlWrapper(
    controlType: 'ChartRangeFilter',
    containerId: 'control_div',
    options: 
      filterColumnLabel: 'Date',
      ui: 
        chartOptions: 
          hAxis: 
            format: formatPattern
          
        
      
    
  );

  // Table visualization
  var myTable = new google.visualization.ChartWrapper(
    chartType: 'Table',
    containerId: 'table_div'
  );

  // Bind myTable to the dashboard, and to the controls
  // this will make sure our table is update when our date changes
  myDashboard.bind(myDateSlider, myTable);

  // Line chart visualization
  var myLine = new google.visualization.ChartWrapper(
    chartType: 'LineChart',
    containerId: 'line_div',
    options: 
      hAxis: 
        format: formatPattern
      
    
  );

  // Bind myLine to the dashboard, and to the controls
  // this will make sure our line chart is update when our date changes
  myDashboard.bind(myDateSlider, myLine );

  myDashboard.draw(myData);
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="dashboard_div">
  <div id="control_div"></div>
  <div id="line_div"></div>
  <div id="table_div"></div>
</div>

【讨论】:

以上是关于Rangefilter Google Charts in hours:minutes的主要内容,如果未能解决你的问题,请参考以下文章

如何内联输出 django_filters.RangeFilter 文本框?

markdown Google Charts实验

Google Charts:在相同的“X”值上绘制多个“Y”值

Google Charts列着色?

Google Charts interpolateNulls无效

Google Charts (GeoChart) - 放大