0

我正在尝试在 x 轴上生成一个带有时间线的堆积柱形图,其中每个系列不一定具有与相关日期匹配的数据点。我能够生成一个每个数据点有多个列的柱形图,但我真的想要一个堆积图。图表的数据是 JSON,我可以根据需要操纵其格式。

var options = {
              chart: {
                  renderTo: 'timeline',
                  zoomType: 'x',
                  type: 'column'
              },
              title: {
                  text: 'Releases'
              },
              yAxis: {
                  title: {
                    text: 'Count'
                  }
              },
              xAxis: {
                  type: 'datetime'
              },
              legend: {
                  enabled: true
              },
              series: []
          };

/* 
Following URL returns json like:

{
    "rows": {
        "dynamicCategory1": {
            "0": {
                "count": "7",
                "unix_date": "1344225600"
            },
            "3": {
                "count": "2",
                "unix_date": "1344312000"
            }
        },
        "dynamicCategory2": {
            "5": {
                "count": "7",
                "unix_date": "1344225600"
            },
            "7": {
                "count": "2",
                "unix_date": "1345003200"
            }
        }
    }
}

*/

$.getJSON("/mydatainjsonformat/", function(data) {

  $.each(data.rows, function(key, val) {
    var series = { data: [] };

    series.name = key;

    $.each(val, function(key2, val2) {
      var x = parseFloat(val2.unix_date * 1000);
      var y = parseFloat(val2.count);

      series.data.push([x, y]);

    });

    options.series.push(series);

  });

  $(function () {
      var chart1;
      $(document).ready(function() {
          chart1 = new Highcharts.Chart(options);
      });
  });
});

从理论上讲,我可以更改数据,为每个没有给定日期值的类别包含一个 0,然后将日期设为类别 - 但这是正确的方法吗?这不会搞砸x轴上的时间吗?任何方向都非常感谢。

jsfiddle

4

2 回答 2

2

所以:在经历了很多痛苦和折磨之后,我错过了这个需要作为图表配置传递的节:

              plotOptions: {
                column: {
                  stacking: 'normal'
                },

即便如此,我也花了很长时间才找到,因为在我的大部分测试中,我都有那节,但没有驼峰式 plotOptions。 多次敲击键盘并哭泣

现在工作得很好。其他麻烦:要让 jsfiddle 通过 AJAX 调用('/echo/json/')向你返回 json,你必须向它发布。我花了一段时间才确定为什么 $.getJSON 也不起作用。

于 2012-10-05T15:48:44.797 回答
0

我认为你想要实现这样的目标。

您有类似从 X 日期开始的事件,并且您想在 Y 日期之前画线。

因此,您正在尝试使用堆叠条形图来使用它,因此您会在 Y 轴上获得线条。

如果我是正确的,那么我建议您使用 Highstock,它是Highcharts开发的库之一。

Highstock是创建时间线图表的首选 API。

我创建了一个示例小提琴,可以帮助您开始。给你:http: //jsfiddle.net/mhardik/YmRUg/

于 2012-10-05T04:19:00.977 回答