你定義什麼是點的價值,實際上它應該是該點的colorValue
。 value
是關於這個點的尺寸的信息,關於它的顏色。 colorValue可能是負數 - 值不能。如果您希望點的大小取決於其顏色,則需要將colorValue縮放比例轉換爲某個正值縮放比例,例如, [1, 10]
。
如果您爲點定義colorValue,則可以使用colorAxis.dataClasses
並應用顏色。
var dataMin = points.filter(p => !isNaN(p.value)).reduce((min, p) => Math.min(min, p.value), Infinity);
var dataMax = points.filter(p => !isNaN(p.value)).reduce((max, p) => Math.max(max, p.value), -Infinity);
var newMin = 1;
var newMax = 10;
function transformValue (value) {
return (newMax - newMin) * (value - dataMin)/(dataMax - dataMin) + newMin;
}
var transformedData = points.map(p => {
var transformedPoint = Object.assign({}, p);
if (p.value !== undefined) {
transformedPoint.value = transformValue(p.value);
transformedPoint.colorValue = p.value;
}
return transformedPoint;
});
類的colorAxis
colorAxis: {
dataClasses: [{
to: -3,
color: '#00ff00'
}, {
from: -3,
to: -1,
color: '#ff0000'
}, {
from: 0,
to: 0,
color: '#000000'
}, {
from: 0.1,
to: 3,
color: '#0000ff'
}, {
from: 3,
color: '#00ffff'
}]
},
例如與轉換後的數據:https://jsfiddle.net/aepu6dvt/
例如與相同大小的點:https://jsfiddle.net/aepu6dvt/1/
但你的演示是一個樹形圖,不熱圖?無論如何,您需要使用['colorAxis.dataClasses'](http://api.highcharts.com/highmaps/colorAxis.dataClasses)來定義這些步驟。順便說一句,當數值例如爲0.01時會發生什麼?還是-0.4?以下是一個簡單的示例:https://jsfiddle.net/rq862nuv/2/ –
0.01將舍入爲零。 –
好吧,只是不要忘記在**渲染圖表之前捨棄數據**。 –