Javascript AMcharts:根据值的范围设置FillColor字段的颜色
因此,如果值在某个范围内,我想改变单个条的颜色。如何在Javascript中实现这一点?我真的不想弄乱我的JSON数据Javascript AMcharts:根据值的范围设置FillColor字段的颜色,javascript,charts,amcharts,Javascript,Charts,Amcharts,因此,如果值在某个范围内,我想改变单个条的颜色。如何在Javascript中实现这一点?我真的不想弄乱我的JSON数据 var chart = AmCharts.makeChart( "chartdiv", { "type": "serial", "theme": "none", "dataProvider": [ { "country": "USA", "visits": 2025 }, { "country": "China", "visits": 1882
var chart = AmCharts.makeChart( "chartdiv", {
"type": "serial",
"theme": "none",
"dataProvider": [ {
"country": "USA",
"visits": 2025
}, {
"country": "China",
"visits": 1882
}, {
"country": "Japan",
"visits": 1809
}, {
"country": "Germany",
"visits": 1322
}, {
"country": "UK",
"visits": 1122
}, {
"country": "France",
"visits": 1114
}, {
"country": "India",
"visits": 984
}, {
"country": "Spain",
"visits": 711
}, {
"country": "Netherlands",
"visits": 665
}, {
"country": "Russia",
"visits": 580
}, {
"country": "South Korea",
"visits": 443
}, {
"country": "Canada",
"visits": 441
}, {
"country": "Brazil",
"visits": 395
} ],
"valueAxes": [ {
"gridColor": "#FFFFFF",
"gridAlpha": 0.2,
"dashLength": 0
} ],
"gridAboveGraphs": true,
"startDuration": 1,
"graphs": [ {
"balloonText": "[[category]]: <b>[[value]]</b>",
"fillAlphas": 0.8,
"lineAlpha": 0.2,
"fillColors": changeColour,
"type": "column",
"valueField": "visits"
} ],
"chartCursor": {
"categoryBalloonEnabled": false,
"cursorAlpha": 0,
"zoomable": false
},
"categoryField": "country",
"categoryAxis": {
"gridPosition": "start",
"gridAlpha": 0,
"tickPosition": "start",
"tickLength": 20
},
"export": {
"enabled": true
}
} );
function changeColour(value){
/*var colour;
if (0 <= value && value <= 40){
colour = "#ff3333";
} else if (41 <= value && value <= 66){
colour = "#ff751a";
} else if (value > 66){
colour = "#009933";
}*/
//return colour;
return "#ff3333";
}
var chart=AmCharts.makeChart(“chartdiv”{
“类型”:“串行”,
“主题”:“无”,
“数据提供者”:[{
“国家”:“美国”,
“访问”:2025年
}, {
“国家”:“中国”,
“访问”:1882年
}, {
“国家”:“日本”,
“访问”:1809
}, {
“国家”:“德国”,
“访问”:1322
}, {
“国家”:“英国”,
“访问”:1122
}, {
“国家”:“法国”,
“访问”:1114
}, {
“国家”:“印度”,
“访问”:984
}, {
“国家”:“西班牙”,
“访问”:711
}, {
“国家”:“荷兰”,
“访问”:665
}, {
“国家”:“俄罗斯”,
“访问”:580
}, {
“国家”:“韩国”,
“访问”:443
}, {
“国家”:“加拿大”,
“访问”:441
}, {
“国家”:“巴西”,
“访问”:395
} ],
“valueAxes”:[{
“gridColor”:“#FFFFFF”,
“gridAlpha”:0.2,
“dashLength”:0
} ],
“网格图”:没错,
“起始持续时间”:1,
“图表”:[{
“文本”:“[[category]]:[[value]]”,
“填充字母”:0.8,
“lineAlpha”:0.2,
“填充颜色”:更改颜色,
“类型”:“列”,
“valueField”:“访问”
} ],
“图表光标”:{
“CategoryBallooneEnabled”:false,
“cursorAlpha”:0,
“可缩放”:错误
},
“类别字段”:“国家”,
“分类法”:{
“网格位置”:“开始”,
“gridAlpha”:0,
“滴答声位置”:“开始”,
“滴答声长度”:20
},
“出口”:{
“已启用”:真
}
} );
功能更改颜色(值){
/*颜色变异;
如果(0图表不支持自定义函数作为颜色格式化程序
可能唯一的解决方案是预处理数据,并为每个数据点设置fillColorsField
这似乎是一个完美的工具,用于所有类型的预处理
让我们“发明”一个新的参数fillColorsFunction
,我们将使用它。我们可以重用您的函数ChangeColor
:
"graphs": [{
"balloonText": "[[category]]: <b>[[value]]</b>",
"fillAlphas": 0.8,
"lineAlpha": 0.2,
"fillColorsFunction": changeColour,
"type": "column",
"valueField": "visits"
}],
图表不支持自定义函数作为颜色的格式化程序
可能唯一的解决方案是预处理数据,并为每个数据点设置fillColorsField
这似乎是一个完美的工具,用于所有类型的预处理
让我们“发明”一个新的参数fillColorsFunction
,我们将使用它。我们可以重用您的函数ChangeColor
:
"graphs": [{
"balloonText": "[[category]]: <b>[[value]]</b>",
"fillAlphas": 0.8,
"lineAlpha": 0.2,
"fillColorsFunction": changeColour,
"type": "column",
"valueField": "visits"
}],
感谢@martynasmaI使用dataLoader插件从外部加载我的数据,即使在将chart.dataProvider提供的插件更改为chart.dataLoader.Updated我的答案后,这似乎也不起作用。感谢@martynasmaI使用dataLoader插件从外部加载我的数据,即使在更改了plugin从chart.dataProvider提供给chart.dataLoader.Updated我的答案。
"dataLoader": {
"url": "data.php",
"complete": function( chart ) {
// iterate thorugh all graphs and check if they have
// fillColorsFunction set
for ( i = 0; i < chart.graphs.length; i++ ) {
var graph = chart.graphs[ i ];
if ( graph.fillColorsFunction !== undefined ) {
// iterate thorugh all of the data and add color
graph.fillColorsField = graph.valueField + "FillColor";
for ( var x = 0; x < chart.dataProvider.length; x++ ) {
var dp = chart.dataProvider[ x ];
dp[ graph.fillColorsField ] = graph.fillColorsFunction.call( this, dp[ graph.valueField ] );
}
}
}
}
}