highcharts: définir dynamiquement les couleurs dans le diagramme à secteurs

Je suis en train de définir dynamiquement la couleur pour chaque seria en fonction de leur type.
Ci-dessous mon code qui ne fonctionne pas, mais en montrant ce que je suis en train de faire. Je voudrais définir la couleur de certain type, par exemple:

if type = 'IS' then color =  '#FFCACA'

Je ne peux pas attendre que ret aura tous types, donc j'ai besoin de savoir quels types sont retournés en ret et puis asociate couleur d'un certain type.

Comment faire?

ce code, c'est depuis que les données reçues:

success: function (ret) {
$(function () {
var chart;
$(document).ready(function () {
chart = new Highcharts.Chart({
chart: {
renderTo: 'divPie_' + id,
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: true,
width: 350,
height: 350
},
title: {
text: refrigname
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage}%</b>',
percentageDecimals: 1
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: false
},
showInLegend: true
}
},
series: [{
type: 'pie',
name: 'Current selection',
color: (function () {
switch (ret.type) {
case 'AB': return '#C6F9D2'; 
case 'BC': return '#CCCCB3'; 
case 'CL': return '#CECEFF'; 
case 'CI': return '#FFCAFF'; 
case 'HB': return '#D0CCCD'; 
case 'ON': return '#FFCC99'; 
case 'PM': return '#FFCBB9'; 
case 'SR': return '#EAEC93'; 
case 'TS': return '#D7FBE6'; 
case 'IS': return '#FFCACA'; 
case 'FREE': return '#00FF00'; 
}
}),
data: (function () {
var arr = [];
$(ret).each(function () {
var labelname = "";
switch (this.type) {
case "AB": labelname = "Antibodies"; break;
case "BC": labelname = "Bacteria"; break;
case "CL": labelname = "Cell lines"; break;
case "CI": labelname = "Custom items"; break;
case "HB": labelname = "Hybridoma"; break;
case "ON": labelname = "Oligonucleotides"; break;
case "PM": labelname = "Plasmids"; break;
case "SR": labelname = "siRNA"; break;
case "TS": labelname = "Tissue samples"; break;
case "IS": labelname = "Isolates"; break;
case "FREE": labelname = "Free space"; break;
}
arr.push([labelname, this.cnt]);
})
return arr;
})()
}]
});
});
});
}
  • Au lieu de l'aide de commutateurs, une carte serait un million de fois plus vite (Ce n'est pas une partie du problème/solution) var colors = { 'AB': '#C6F9D2','BC': '#CCCCB3' } return colors[this.type];
  • Qu'essayez-vous de faire ? Vous avez un graphique en secteurs, de sorte que la serie type sera toujours pie.
InformationsquelleAutor dllhell | 2012-12-14