数据图 - 根据值更改颜色

时间:2017-01-13 18:24:52

标签: javascript d3.js datamaps

我在这里遇到了一个数据图示例并尝试编辑它。我需要根据值更改状态颜色,范围从深蓝色到浅蓝色。

此刻,

fills: {
            'lightBlue': '#cc4731',
            'justBlue': '#306596',
            'deepBlue': '#667faf',
            'mediumBlue': '#a9c0de',
            'deepBlue': '#ca5e5b',              
            'defaultFill': '#eddc4e'
        }

数据有,

data: {
            AZ: {
                    fillKey: 'lightBlue',
                    userVisits: 5
                },
            CO: {
                    fillKey: 'justBlue',
                    userVisits: 5
                },
            DE: {
                    fillKey: 'deepBlue',
                    userVisits: 32
                },
            ....
}

但是根据userVisits会产生蓝色阴影吗?

1 个答案:

答案 0 :(得分:1)

我认为没有一个选项可以将逻辑放在fillkey选择中。我建议在将数据提供给Datamaps之前处理数据以指定一个填充键。 我做了codepen来演示。 此外,“填充”数据具有重复的键和十六进制值,与所描述的颜色不匹配。

var stateData = {
        AZ: {
                userVisits: 5
            },
        CO: {
                userVisits: 15
            },
        DE: {
                userVisits: 32
            }
    }

function addFillKey(mapData){
  for (var mapDatum in mapData){
        var userVisits = mapData[mapDatum].userVisits;
        if(userVisits < 10){
            mapData[mapDatum].fillKey = "lightBlue"
        }else if(userVisits < 20){
            mapData[mapDatum].fillKey = "justBlue"
        }else{
            mapData[mapDatum].fillKey = "mediumBlue"
        }
    }
}

addFillKey(stateData);

var map = new Datamap({
  element: document.getElementById('container'),
  scope: 'usa',
  fills: {
    'lightBlue': '#cc4731',
    'justBlue': '#306596',
    'deepBlue': '#667faf',
    'mediumBlue': '#a9c0de',
    'deepBlue': '#ca5e5b',              
    'defaultFill': '#eddc4e'
  },
  data: stateData

});