1

我对 Flot 图表和来自 AJAX 的数据有疑问。基本上我创建了数组来显示图表,但不知何故我看到了轴标签但没有数据。另外我怎样才能做一个堆叠或条形图?

编辑:或者任何人都可以告诉我如何使用带有 x 轴标签的 AJAX 在 flot 中显示数据。您可以在此处查看代码http://jsfiddle.net/DaG5W/284/。有人请让我知道我在这里做错了什么吗?

这是我使用的代码。

$.getJSON(url, function(output) {
    var calendar, count, fieldNames, i, j, values, xAxis;
    fieldNames = new Array();
    i = 0;
    while (i < output.length) {
      if (fieldNames.indexOf(output[i].FieldName) < 0) {
        fieldNames.push(output[i].FieldName);
      }
      i++;
    }
    calendar = new Array();
    i = 0;
    while (i < output.length) {
      if (calendar.indexOf(output[i].Calendar) < 0) {
        calendar.push(output[i].Calendar);
      }
      i++;
    }
    xAxis = [];
    i = 0;
    while (i < calendar.length) {
      xAxis.push([parseInt(i + 1), calendar[i]]);
      i++;
    }
    data = [];
    i = 0;
    while (i < fieldNames.length) {
      values = [];
      count = 0;
      j = 0;
      while (j < output.length) {
        if (fieldNames[i] === output[j].FieldName) {
          count++;
          values.push([parseInt(count), parseInt(output[j].Totals)]);
        }
        j++;
      }
      data.push([
        {
          label: fieldNames[i].toString(),
          data: values,
          bars: {
            show: true
          },
          lines: {
            show: false
          }
        }
      ]);
    }
    return i++;
  });
  options = {
    xaxis: {
      ticks: xAxis
    }
  };
  plot = $.plot($("#div"), [data], options);

}
4

1 回答 1

5

您非常接近可行的解决方案。你做错的只是在两个地方嵌套了太多的数组:

  data.push([
    {
      label: fieldNames[i].toString(),
      data: values,
      bars: {
        show: true
      },
      lines: {
        show: false
      }
    }
  ]);

不需要[]围绕您的系列对象。

plot = $.plot($("#div"), [data], options);

同样在这里,不需要[]around data。之后,它将绘制图表。见这里:http: //jsfiddle.net/ryleyb/DaG5W/291/

于 2012-04-23T15:14:30.297 回答