条形图图例在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