charts - 如何使用谷歌折线图绘制实时数据

标签 charts google-visualization

我正在使用每秒一次的 $interval 调用来绘制来自服务器的数据的谷歌折线图。现在我想将新数据添加到已经绘制的图表中,而不是再次重新绘制图表......

$interval(dataCall, 1000);

		function dataCall() {
		
			$http.get({x: "XYZ"}, successCallback, failureCallback);
			
			function successCallback(response) {
				$scope.res = response; 		//response is like {"a":1, "b":2}
				drawBasic();				
			}
			
			function failureCallback(response) {
				console.log(response);
			}
		}

		google.charts.load('current', {packages: ['corechart', 'line']});
		
		var dataArray = [];
		
		function drawBasic() {
				
			var data = new google.visualization.DataTable();
			data.addColumn('date', 'Timestamp');
			data.addColumn('number', 'value');
			
			var options = {
					hAxis: {
						title: 'Timestamp'
					},
					vAxis: {
						title: 'something'
					},
					tooltip: { isHtml: true },
					legend: {
						position: 'none'
					}
				};
				
			dataArray.push([new Date(), $scope.res]);
				
			data.addRows(dataArray);
			
			var chart = new google.visualization.LineChart(document.getElementById("chart_div"));
			chart.draw(data, options);
					     
		}

最佳答案

必须重新绘制图表才能显示新数据,
但您可以避免每次都重新创建图表和选项

推荐类似于以下的设置...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = new google.visualization.DataTable();
  data.addColumn('date', 'Timestamp');
  data.addColumn('number', 'a');
  data.addColumn('number', 'b');

  var options = {
    hAxis: {
      title: 'Timestamp'
    },
    vAxis: {
      title: 'something'
    },
    tooltip: { isHtml: true },
    legend: {
      position: 'none'
    }
  };

  var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

  dataCall();
  $interval(dataCall, 1000);

  function dataCall() {
    $http.get({x: "XYZ"}, successCallback, failureCallback);

    function successCallback(response) {
      data.addRow([new Date(), response.a, response.b]);
      chart.draw(data, options);
    }

    function failureCallback(response) {
      console.log(response);
    }
  }
});

一秒的时间间隔可能太短,无法获取数据并绘制图表...

关于charts - 如何使用谷歌折线图绘制实时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48114150/

相关文章:

java - 设计图表时在 android AchartEngine 中使用 textlables

java - 如何在彩色谷歌条形图中添加图例(根据颜色显示文本)?

html - 显示具有单个值的谷歌折线图(图像)

javascript - 使用 Google Visualization 时出现错误 "Row given with size different than 2"

jquery - 如何从按钮 onclick 事件启动 fancybox 来绘制谷歌图表?

css - Google 可视化表,如何使用 css 删除默认的双色调图像?

javascript - Highcharts 显示/隐藏所选点的数据标签

javascript - 饼图不查看,虽然我使用 Table 正在工作

c# - WinForms 应用程序中是否可以有图表和图形?

javascript - amcharts 与 Ruby on Rails 的集成 : Using data from the database to populate the graph