更改jvectormap负值颜色

时间:2015-04-07 15:45:05

标签: css svg jvectormap

默认情况下,当我的jvectormap中有负值时,它会将国家/地区颜色设置为黑色(在检查国家/地区元素时,我会看到以下“填充”值:#000NaN)。我想改变这种颜色。我怎么能这样做?

编辑:这是hackish,但我通过循环国家并检查黑色来更新黑色国家的颜色。代码如下:

        try {
            map = elVectorMap.vectorMap('get', 'mapObject');
            map.series.regions[0].setValues(data);
        } catch (e) {
            var vectorMapOptions = {
                map: 'world_mill_en',
                backgroundColor: '#ffffff',
                regionStyle: {
                    initial: {
                        fill: '#aac5e1'
                    }
                },
                series: {
                    regions: [{
                        values: data,
                        scale: ['#aac5e1', '#0e569f'],
                        normalizeFunction: 'polynomial'
                    }]
                }
            };
            elVectorMap.vectorMap(vectorMapOptions);
        }

        // Change the color of negative value countries from black to red
        elVectorMap.find('.jvectormap-element[fill="#000NaN"]').each(function(){
            $(this).css('fill', '#ffcfcd');
        });

2 个答案:

答案 0 :(得分:0)

问题是normalizeFunction: 'polynomial'。您必须使用normalizeFunction: 'lineal'进行更改。但是,如果多项式归一化对你很重要,你总是可以生成两个系列,一个具有负值,另一个具有正值,以便以某种方式摆脱黑色国家问题。

示例:

    series: {
      regions: [{
        values: countryData2,
        scale: ['#d6655c', '#de837c', '#e6a29d', '#eec1bd', '#f6e0de'],
        normalizeFunction: 'lineal',
        legend: {
            vertical: false,
            title: "<span style=\"font-size:7px;\">% Dif.</span>"
        }
      },
      {
        values: countryData3,
        scale: ['#e6efe6', '#b5d0b4', '#84b183', '#539152', '#227220', '#0a6308'],
        normalizeFunction: 'polynomial',
        legend: {
            vertical: false,
            title: "<span style=\"font-size:7px;\">% Dif.</span>"
        }
      }

      ]
    },

然而,这也产生了两个不同的传说,但对我来说根本不是问题。

答案 1 :(得分:0)

使用此规范化功能代替&#34; polinomial&#34;或&#34;线性&#34;值

normalizeFunction: function(value) {
   if (value < 0)
      return - Math.pow(Math.abs(value), 0.2)
   return Math.pow(value, 0.2);
},