Названия Highcharts Legend меняются после детализации и обратно?

У меня есть пример кода для вопроса здесь: http://jsfiddle.net/MuydK/

Проблема связана с заголовком легенды в ключе под диаграммой, который меняется после того, как я углубился и вышел.

Они должны оставаться как «фактические» и «целевые», так и меняются на «серии 1» и «серии 2».

$(function () {
    var chart;
    $(document).ready(function () {
        var colors = Highcharts.getOptions().colors,
        categories1 = ['1011', '1112', '1213', '1415'],
        name1 = 'Actual',

Я думаю, что могу что-то упустить в конфигурации детализации или в коде setChart? У меня возникла та же проблема с парой диаграмм, основанных на коде, опубликованном выше.

Огромное спасибо


person CityCollegeSouthampton    schedule 16.11.2012    source источник
comment
Если вы говорите о легенде, которую, я полагаю, вы делаете, пожалуйста, обновите вопрос, чтобы другим было легче найти решение той же проблемы.   -  person Nils    schedule 17.11.2012


Ответы (2)


Edit2: проблема заключается в вашем заявлении else в функции ниже.

click: function() {
    var drilldown = this.drilldown;
    if (drilldown) { // drill down
        setChart(drilldown.name, drilldown.categories, [drilldown.data], drilldown.color);
    } else { // restore
        setChart(name, categories1, [data1, data2], 'white');
    }
}​

Вместо того, чтобы избавиться от name1 = 'Actual' и иметь только data1 и data2 и добавить к ним name и color, тогда вы могли бы сделать это вместо этого

click: function() {
    var drilldown = this.drilldown;
    if (drilldown) { // drill down
        chart.xAxis[0].setCategories(drilldown.categories);
        setChart([drilldown.data]);
    } else { // restore
        chart.xAxis[0].setCategories(categories);
        setChart([data1, data2]);
    }
}

// add code for removing series
chart.addSeries({
    data
});​

Надеюсь, вы понимаете, но будет проще, если вы создадите data1/2 как объект highcharts и просто добавите в него детализированную часть. Так что вы можете измениться;

series: [{
    name: name1,
    data: data1,
    color: colors[0]},
{
    name: name2,
    data: data2,
    color: colors[1]}],

to:

series: [data1, data2],​

Редактировать: когда вы выполняете операции ниже, вы не должны устанавливать перерисовку на true, это будет намного быстрее. То же самое касается добавления серии. Вам не нужно вызывать chart.redraw(), пока вы не удалите и не добавите диаграммы. И удалять вещи легче в обратном порядке. Итак, измените:

while (chart.series.length > 0) {
    chart.series[0].remove(true);
}

To

for (var i = chart.series.length; i >= 0; i--){
    chart.series[i].remove(false);
}
// add series with redraw == false
chart.redraw();
person Nils    schedule 16.11.2012
comment
Можете ли вы обновить ссылку jsfiddle со сценарием диаграммы и опубликовать ссылку, как новую для highcharts, и не знаете, куда я должен добавить предоставленный код. - person CityCollegeSouthampton; 17.11.2012

Надеюсь, это то, что вам нужно,

JSFiddle — проблема с легендой

код:

function setChart(name, categories, data, color) {
       console.log(name, categories, data, color);
       chart.xAxis[0].setCategories(categories);
       while (chart.series.length > 0) {
            chart.series[0].remove(true);
       }
       for (var i = 0; i < data.length; i++) {
            chart.addSeries({
                name: name[i],
                data: data[i],
                color: color[i]
           });
      }
 }
person Zaheer Ahmed    schedule 17.11.2012