使用数据时间和匹配x轴到y轴的线图的Hicharts数据API

时间:2016-05-27 17:12:22

标签: javascript php json highcharts

我在使用highcharts填充和匹配x轴和y轴时遇到问题。

我不确定highcharts如何处理数据,但我的想法是在x轴上我填充上周的日期,然后在Y轴上收集当天的总金额。

我的数据将包含x轴和y轴的坐标以及名称。

问题: 我的问题是我的数据不一致。原因是,对于特定日期,我可能没有任何交易。因此,该日期没有交易。

问题1 有没有办法解决这个问题?

问题2

我可以使用highchart xAxis选项自动生成日期时间,然后匹配我的数据集中的这些点吗?

  

我不限于更改我的数据结构,任何有关如何去的建议   非常感谢。

数据集格式参考

https://jsfiddle.net/f2bnc2ox/

看看我的jsfiddle

https://jsfiddle.net/chapskev/ao1m9s9r/3/

   [
       {
          "name":"Open Air Market",
          "data":[
             [
                "2016-06-16",
                450
             ],
             [
                "2016-06-17",
                1980
             ],
             [
                "2016-06-18",
                1650
             ],
             [
                "2016-06-19",
                420
             ],
             [
                "2016-06-20",
                630
             ],
             [
                "2016-06-21",
                660
             ]
          ],
          "keys":[
             "name",
             "y"
          ]
       },
       {
          "name":"Parking Fee",
          "data":[
             [
                "2016-06-17",
                300
             ],
             [
                "2016-06-21",
                1000
             ]
          ],
          "keys":[
             "name",
             "y"
          ]
       },
       {
          "name":"Fisheries Daily Revenue",
          "data":[
             [
                "2016-06-21",
                200
             ]
          ],
          "keys":[
             "name",
             "y"
          ]
       }
    ]

1 个答案:

答案 0 :(得分:0)

你的问题不是很清楚,而且我不确定这会对其他人有什么帮助,但是我对多维数组和HighCharts做了很多,所以我觉得我要刺了一下在帮助。假设您的数据数组名为$ aData(例如代码)。

//INIT VARS
$cSeries = '';
$cXAxis = '';
$bAxis = true;

//LOOP TO BUILD SERIES
foreach ($aData AS $nPos => $aSet) {

  //FIRST PASS? BUILD AXIS
  if ($bAxis) {
    $cXAxis .= "xAxis: {\n" .
               "    categories: ['" . implode("','", array_keys($aSet['data'])) . "']\n" .
               "}, ";

    $bAxis = false; //NEED ONLY ONCE
  }

  $cSeries .= ", {\n" .
              "    name: '" . $aSet['name'] . "',\n" .
              "    data: [" . implode(",", $aSet['data']) . "]\n" .
              "}";
}

$cSeries = substr($cSeries, 2); //REMOVE LEADING COMMA
$cOutput = "series: [" . $cSeries . "]\n" . $cXAxis;

最后,$ cOutput等于

series: [{
  name: 'A revenue',
  data: [7700,5000]
}, {
  name: 'B revenue',
  data: [390,210]
}]
xAxis: {
  categories: ['4','5']
},

这与我相信您要创建的两个数据示例相匹配。您可能想要遍历类别(而不是使用implode),以便您可以将它们命名为Apr,May。