【问题标题】:How To Use Highmaps Data In JSON Not Labeled 'value'如何在未标记为“值”的 JSON 中使用 Highmaps 数据
【发布时间】:2019-05-01 22:00:11
【问题描述】:

我有一个包含许多字段的数据集。我无法控制这个 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 标记区域(在本例中为北卡罗来纳州的县)。地图显示州和县元素。但是,没有数据用于绘图。这是因为 HighMaps 代码期望 value 元素出现在我认为的数据中。

有没有办法告诉 HighMaps 数据集中的哪个元素用于对等值线进行着色?

【问题讨论】:

    标签: javascript highcharts


    【解决方案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 我用来将旧对象与新属性合并,但我目前没有时间研究它。

    【讨论】:

    • 这不会对地图渲染产生任何影响。这也不是keys 的工作方式。它是数据点中数组位置到选项的映射(api.highcharts.com/highcharts/plotOptions.series.keys).It 不是 ['x', 'y'] 的从“x”到“y”的映射,而是未命名数组值的序数位置列表到某种图表选项。我正在寻找类似于joinBy 设置的东西。
    • 我很确定您对keys 的解释是错误的。他们的工作示例清楚地表明它被用于映射到预期数据形状的value 属性。但是,如果您可以像他们一样在 JS Fiddle 上创建一个工作示例,我将很乐意尝试让它为您工作。
    • 这里是 jsFiddle 示例:jsfiddle.net/wergeld/pmntuc1w。例如,我想显示median 值。
    • 我的 json 端点出现“连接超时”。
    • 您对keys 的看法是正确的。它仅适用于数组。但我能够让它工作。请参阅我更新的答案。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2019-01-04
    相关资源
    最近更新 更多