我有一个包含许多字段的数据集。我无法控制此JSON的创建。样本:
<div class="aboutbox">ABOUT</div>
图表代码为:
data = [
{
'maparea':'3704000063',
'relatedsource':null,
'empcount':'198390',
'response':'78',
'mean':'61663.00',
},
...
]
geoJSON使用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}'
}
}]
});
标记区域(在本例中为NC县)。该地图显示了州和县的元素。但是,没有数据用于绘图。这是因为HighMaps代码期望在我认为的数据中出现fips
元素。
有没有一种方法可以告诉HighMaps数据集中的哪些元素用于遮挡弧度?
答案 0 :(得分:1)
我看不到任何将您的唯一数据形状映射到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
来合并旧对象和新属性,但是我没有时间研究片刻。