javascript - 如何使用javascript从数组中绘制折线图

标签 javascript arrays graph

这是我的数组:

<script>
var table = document.getElementById('mytable');
var rows = table.getElementsByTagName('tr');
var i, j, cells;
var distance=[];
var date=[];
var entryid=[];
j=rows.length;
for (i = 1; i < j; i++) {
cells = rows[i].getElementsByTagName('td');
if (!cells.length) {
continue;
}
distance[i-1] = cells[0].innerHTML;
date[i-1]=cells[1].innerHTML;
entryid[i-1]=cells[2].innerHTML;
}
var c=[];
for (var z=0;z<distance.length;z++){
c.push([distance[z],date[z]]);
}
</script>

我想在我的代码中将二维数组“c”显示为 html 的 div 元素中的折线图。使用javascript。提前致谢 :) 编辑: 使用谷歌图表我这样做了:

function drawBackgroundColor() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'Distance');
data.addColumn('number', 'Date');

data.addRows(c);

var options = {
hAxis: {
title: 'Time'
},
vAxis: {
title: 'Popularity'
},
backgroundColor: '#f1f8e9'
};

var chart = new         google.visualization.LineChart(document.getElementById('yo'));
chart.draw(data, options);
}

'c' 数组包含这样的值 [[3,2016/3/20],[5,2016/3/21],...] 但是在 id="yo"的分区上没有显示任何内容。 编辑 ******* 我添加了域列,这是我的新代码。

function drawChart(){
// create DataTable
var data = new google.visualization.DataTable();
data.addColumn('number', 'Id');
data.addColumn('number', 'distance');
data.addColumn('string', 'date');

// load data
for (var p = 0; p < distance.length; p++) {
var row = [p, distance[p], date[p]];
data.addRow(row);
}

var options = {};

var chart = new    google.visualization.LineChart(document.getElementById('yo'));
chart.draw(data, options);
}

但是它不工作,不显示任何东西。我已经在我的 body 元素中编写了这段代码,并在 head 部分包含了所需的库。 距离和日期是两个一维数组,日期数组包含格式为 2016/3/19 的值,我应该为其列数据类型使用日期还是字符串?

*********************编辑********************* 这是我的代码:

<script>
var p=0;
var table = document.getElementById('mytable');
var rows = table.getElementsByTagName('tr');
var i, j, cells;
var distance=[];
var date=[];
var entryid=[];
j=rows.length;
for (i = 1; i < j; i++) {
cells = rows[i].getElementsByTagName('td');
if (!cells.length) {
    continue;
}
distance[i-1] = cells[0].innerHTML;
date[i-1]=new Date(reverse(cells[1].innerHTML));
entryid[i-1]=cells[2].innerHTML;
}
var c=[];
for (var z=0;z<distance.length;z++){
c.push([date[z],distance[z]]);
}
document.getElementById('cvs').innerHTML=c[0];
function reverse(f){
var g=f.split("/");
var goodstr=g[1]+"/"+g[2]+"/"+g[0];
return goodstr;
}
google.charts.load('44', {
callback: drawBackgroundColor,
packages: ['corechart']
});

function drawBackgroundColor() {
var m = [
[new Date('3/16/2016'), 3],
[new Date('3/17/2016'), 5],
[new Date('3/18/2016'), 7],
[new Date('3/19/2016'), 10],
];

var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Distance');

data.addRows(c);

var options = {
hAxis: {
  title: 'Time'
},
vAxis: {
  title: 'Popularity'
},
backgroundColor: '#f1f8e9'
};

var chart = new    google.visualization.LineChart(document.getElementById('yo'));
chart.draw(data, options);
}
</script>

这看起来很正确,但是行不通...我不知道为什么! @WhiteHat 非常感谢你的帮助,...在你提供的代码中,如果我使用你在 data.addRows() 中使用的'm'数组,它的工作,但是当我把我的数组'c'它不工作:(

最佳答案

不要认为您会找到任何更容易的东西。
试试这个,如果需要我可以在 HTML 表格中添加...

google.charts.load('44', {
  callback: drawBackgroundColor,
  packages: ['corechart']
});

function drawBackgroundColor() {
  var c = [
    [new Date('3/16/2016'), 3],
    [new Date('3/17/2016'), 5],
    [new Date('3/18/2016'), 7],
    [new Date('3/19/2016'), 9],
  ];

  var data = new google.visualization.DataTable();
  data.addColumn('date', 'Date');
  data.addColumn('number', 'Distance');

  data.addRows(c);

  var options = {
    hAxis: {
      title: 'Time'
    },
    vAxis: {
      title: 'Popularity'
    },
    backgroundColor: '#f1f8e9'
  };

  var chart = new google.visualization.LineChart(document.getElementById('yo'));
  chart.draw(data, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="yo"></div>

关于javascript - 如何使用javascript从数组中绘制折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36113789/

相关文章:

arrays - Matlab Accumarray 用于 3D 矩阵

图算法的C++实现

javascript - 鼠标悬停更改图像颜色

javascript - 使用 JS 隐藏元素中的文本(而不是元素本身)

转换要存储在 char* 数组中的整数

c - 将多维数组与通用函数一起使用

javascript - 如何将 svg 转换为 d3.js 代码?

javascript - 如何对异步映射函数执行递归

javascript - Jquery Javascript函数,简单错误,找不到!

javascript - redux 形式方法 "PUT"中的 500(内部服务器错误)