默认情况下,当我的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');
});
答案 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);
},