条形图图例在AMSCHART javascript中不起作用
大家好,我正在使用条形图图例在AMSCHART javascript中不起作用,javascript,css,amcharts,Javascript,Css,Amcharts,大家好,我正在使用amchartsbar chart它工作正常,但我正在尝试获取legend,但它没有正确出现在这里我粘贴了我的试用代码帮助!我需要有国名的传奇 密码 var chart=AmCharts.makeChart(“chartdiv”{ “主题”:“光”, “类型”:“串行”, “起始持续时间”:2, “数据提供者”:[{ “国家”:“美国”, “访问”:4025, “颜色”:“FF0F00” }, { “国家”:“中国”, “访问”:1882年, “颜色”:“FF6600” },
amcharts
bar chart它工作正常,但我正在尝试获取legend,但它没有正确出现在这里我粘贴了我的试用代码帮助!我需要有国名的传奇
密码
var chart=AmCharts.makeChart(“chartdiv”{
“主题”:“光”,
“类型”:“串行”,
“起始持续时间”:2,
“数据提供者”:[{
“国家”:“美国”,
“访问”:4025,
“颜色”:“FF0F00”
}, {
“国家”:“中国”,
“访问”:1882年,
“颜色”:“FF6600”
}, {
“国家”:“日本”,
“访问”:1809年,
“颜色”:“FF9E01”
}, {
“国家”:“德国”,
“访问”:1322次,
“颜色”:“FCD202”
}, {
“国家”:“英国”,
“访问”:1122次,
“颜色”:“#F8FF01”
}, {
“国家”:“法国”,
“访问”:1114,
“颜色”:“#B0DE09”
}, {
“国家”:“印度”,
“访问”:984,
“颜色”:“04D215”
}, {
“国家”:“西班牙”,
“访问”:711,
“颜色”:“0D8ECF”
}, {
“国家”:“荷兰”,
“访问”:665次,
“颜色”:“0D52D1”
}, {
“国家”:“俄罗斯”,
“访问”:580,
“颜色”:“2A0CD0”
}, {
“国家”:“韩国”,
“访问”:443,
“颜色”:“8A0CCF”
}, {
“国家”:“加拿大”,
“访问”:441,
“颜色”:“CD0D74”
}, {
“国家”:“巴西”,
“访问”:395次,
“颜色”:“754EB”
}, {
“国家”:“意大利”,
“访问”:386次,
“颜色”:“DDDDDD”
}, {
“国家”:“澳大利亚”,
“访问”:384,
“颜色”:“#999999”
}, {
“国家”:“台湾”,
“访问”:338次,
“颜色”:“#333333”
}, {
“国家”:“波兰”,
“访问”:328次,
“颜色”:“000000”
}],
“价值轴”:[{
“位置”:“左”,
“标题”:“访客”
}],
“图表”:[{
“文本”:“[[category]]:[[value]]”,
“fillColorsField”:“color”,
“填充字母”:1,
“lineAlpha”:0.1,
“类型”:“列”,
“valueField”:“访问”
}],
“深度3D”:20,
“角度”:30,
“图表光标”:{
“CategoryBallooneEnabled”:false,
“cursorAlpha”:0,
“可缩放”:错误
},
“类别字段”:“国家”,
“分类法”:{
“网格位置”:“开始”,
“唇瓣旋转”:90
},
“出口”:{
“已启用”:真
}
});代码>
#chartdiv{
宽度:100%;
高度:500px;
}
图例使用的是图形
对象,而不是类别/轴标签,这就是为什么代码中所有列只看到一个标记的原因。如果要为每列生成图例标记,则必须使用图例的数组创建自己的标记。有一个插件可以自动为您完成这项工作
插件代码如下:
/*
Plugin to generate legend markers based on category
and fillColor/lineColor/color field from the chart data by using
the legend's custom data array. Also allows for toggling markers
by completely removing/adding columns from the chart
The plugin assumes there is only one graph object.
*/
AmCharts.addInitHandler(function(chart) {
//method to handle removing/adding columns when the marker is toggled
function handleCustomMarkerToggle(legendEvent) {
var dataProvider = legendEvent.chart.dataProvider;
var itemIndex; //store the location of the removed item
//Set a custom flag so that the dataUpdated event doesn't fire infinitely, in case you have
//a dataUpdated event of your own
legendEvent.chart.toggleLegend = true;
// The following toggles the markers on and off.
// The only way to "hide" a column and reserved space on the axis is to remove it
// completely from the dataProvider. You'll want to use the hidden flag as a means
// to store/retrieve the object as needed and then sort it back to its original location
// on the chart using the dataIdx property in the init handler
if (undefined !== legendEvent.dataItem.hidden && legendEvent.dataItem.hidden) {
legendEvent.dataItem.hidden = false;
dataProvider.push(legendEvent.dataItem.storedObj);
legendEvent.dataItem.storedObj = undefined;
//re-sort the array by dataIdx so it comes back in the right order.
dataProvider.sort(function(lhs, rhs) {
return lhs.dataIdx - rhs.dataIdx;
});
} else {
// toggle the marker off
legendEvent.dataItem.hidden = true;
//get the index of the data item from the data provider, using the
//dataIdx property.
for (var i = 0; i < dataProvider.length; ++i) {
if (dataProvider[i].dataIdx === legendEvent.dataItem.dataIdx) {
itemIndex = i;
break;
}
}
//store the object into the dataItem
legendEvent.dataItem.storedObj = dataProvider[itemIndex];
//remove it
dataProvider.splice(itemIndex, 1);
}
legendEvent.chart.validateData(); //redraw the chart
}
//check if legend is enabled and custom generateFromData property
//is set before running
if (!chart.legend || !chart.legend.enabled || !chart.legend.generateFromData) {
return;
}
var categoryField = chart.categoryField;
var colorField = chart.graphs[0].lineColorField || chart.graphs[0].fillColorsField || chart.graphs[0].colorField;
var legendData = chart.dataProvider.map(function(data, idx) {
var markerData = {
"title": data[categoryField] + ": " + data[chart.graphs[0].valueField],
"color": data[colorField],
"dataIdx": idx //store a copy of the index of where this appears in the dataProvider array for ease of removal/re-insertion
};
if (!markerData.color) {
markerData.color = chart.graphs[0].lineColor;
}
data.dataIdx = idx; //also store it in the dataProvider object itself
return markerData;
});
chart.legend.data = legendData;
//make the markers toggleable
chart.legend.switchable = true;
chart.legend.addListener("clickMarker", handleCustomMarkerToggle);
}, ["serial"]);
//to use, set generateFromData: true in your legend