使用JSON数据的HighChart热力图

7
我正在尝试将JSON特定数据集成到由highmaps/highcharts提供的热图中。
示例 Link to HeatMap Demo 展示了如何使用CSV方法加载数据。但是,我无法使用JSON数组运行它。是否有人可以提供与示例中CSV相当的等效JSON,以获得相同的热图图表,或向我展示基于JSON的另一个示例的方法?
提前感谢您。
Peter祝好。

你的json数据是什么样子?热力图使用的是x/y坐标矩阵 [x, y, value] - wergeld
尝试了这一个: [ ["2013年04月01日",0,-0.7], ["2013年04月02日",0,-3.4], ["2013年04月03日",0,-1.1] ] - peter0601
1个回答

4

你需要将其转换为列/行点而不是日期字符串。你将拥有2个分类轴:x和y。然后,x/y轴的索引变为[x,y,value]。因此,如果您的数据从“2013-04-01”开始,则它是您的第一个索引,如下所示:[ ["2013-04-01",0,-0.7], ["2013-04-02",0,-3.4], ["2013-04-03",0,-1.1] ]

[ [0,0,-0.7], [1,0,-3.4], [2,0,-1.1] ]

请注意,这只是一行数据。你的“y”分量是什么?
编辑: 如果你的y轴分量将是一天中的小时数,那么你应该按照以下方式设置你的坐标轴:
xAxis: {
    categories: ['2013-04-01', '2013-04-02', '2013-04-03'],
    labels: {
        rotation: 90
    }
},
yAxis: {
    title: {
        text: null
    },
    labels: {
        enabled: false
    },
    categories: ['Midnight', '1 am', '2 am', '3 am', '4 am', '5 am', '6 am', '7 am', '8 am', '9 am', '10 am', '11 am', 'Noon', '1 pm', '2 pm', '3 pm', '4 pm', '5 pm', '6 pm', '7 pm', '8 pm', '9 pm', '10 pm', '11 pm'],
    min: 0,
    max: 23,
    reversed: true
},

那么你的系列将会是这样的:
series: [{
    borderWidth: 0,
    nullColor: '#EFEFEF',
    data: [ [0,0,-0.7], [1,0,-3.4], [2,0,-1.1] ]
}]

实时演示

我添加了其他项目,让你自己解决(为什么我要设置reversed: true,什么是colorAxis等)。需要注意的重要事项是series.data格式与任何其他highchart设置不同。


内部数组的第二部分是一天中的小时数,也就是y轴。但是如果我看一下基于CSV文件的热力图示例,它该怎么做呢: 日期,时间,温度 2013-01-01,0,1.3 2013-01-01,1,1.4 - peter0601
好的,所以对于每天你都有一些时间范围。这非常简单。你的数组变成了 [ [dayIndex, hourIndex, value]...] - wergeld
好的,但是...我该如何设置x和y轴的定义呢?使用CSV解析似乎会自动将日期解析为日期对象。http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/heatmap-canvas/ - peter0601
你需要将 xAxis.categories 设置为日期,将 yAxis.categories 设置为小时。让我举个例子。 - wergeld
谢谢您的提前帮助。我会尝试一下。根据后端应用程序返回的数据,我应该能够为类别和系列的数据创建JavaScript对象。可能会有相当多的数据,因为我想在那里显示几千个值,但让我们看看 :-) - peter0601
根据您的数据存储方式,情况可能简单或复杂。我们将数据返回为xvalue、yvalue和datavalue,然后通过循环遍历该项,以提取我们的x和y类别,并将索引分配给新series.data对象。解决此问题的方法有很多种。对于某些项目,我们实际上会查询获取3个数据集:x类别、y类别和数据。这完全取决于您的需求。 - wergeld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接