我有一个包含许多字段的数据集。我无法控制这个JSON的创建。样品:
data = [
{
'maparea':'3704000063',
'relatedsource':null,
'empcount':'198390',
'response':'78',
'mean':'61663.00',
},
...
]
图表代码是:
Highcharts.mapChart('container', {
chart: {
map: geojson
},
title: {
text: 'GeoJSON in Highmaps'
},
mapNavigation: {
enabled: true,
buttonOptions: {
verticalAlign: 'bottom'
}
},
colorAxis: {
tickPixelInterval: 100
},
series: [{
data: data,
keys: ['maparea', 'relatedsource', 'empcount', 'response', 'mean'],
joinBy: ['fips', 'maparea'],
name: 'Random data',
states: {
hover: {
color: '#a4edba'
}
},
dataLabels: {
enabled: true,
format: '{point.properties.postal}'
}
}]
});
geoJSON使用fips
标记区域(在本例中为NC中的县)。地图显示州和县的要素。但是,没有数据用于绘图。这是因为HighMaps代码期望在我认为的数据中存在value
元素。
有没有办法告诉HighMaps数据集中的哪些元素用于遮蔽等值线?
我没有看到将您的唯一数据形状映射到expected keys in the data according to the docs的任何选项。根据您的评论,这可以通过数组实现,但对于对象来说似乎不可能。
但是,将对象重新映射到所需的形状非常简单。下面的代码给出了一个部分示例。
let dataMapped = data.map(obj => {
var median = Number(obj.median);
return Object.assign(obj, { name: obj.maparea, value: median });
});
然后使用dataMapped
作为数据的值。
可能有更优雅的方式在ES6中使用对象扩展来执行此操作,并避免使用Object.assign
将旧对象与新属性合并,但我目前没有时间研究它。