2013-02-22 2 views
8

У меня около 6 диаграмм на одной странице, одна из них должна иметь другую тему из других пяти. У меня есть темы, работающие индивидуально, но вторая инициализированная применяется ко всем диаграммам.Highcharts.js - несколько тем на одной странице?

Есть ли способ указать, какую тему использует диаграмма?

+2

C вы показываете демо? Вероятно, вы используете 'Highcharts.setOptions()', который устанавливает параметры для всех диаграмм, созданных после его вызова. –

+2

Да, это именно то, что я делал. После того, как я прочитал ваш комментарий, я переместил вызов setOptions() внутри функции, которая создает диаграммы, и теперь она работает :) –

+0

Ха-ха, отлично! :) –

ответ

8

После прочтения комментария Рикардо я понял, что мне просто нужно было переместить вызов setOptions() внутри вызова $ (document) .ready.

Значительно упрощенная версия моего кода:

Highcharts.theme1 = { 
    chart: { 
     borderWidth: 0, 
    }, 
}; 

var chart; 
$(document).ready(function() { 

    // Apply the theme 
    var highchartsOptions = Highcharts.setOptions(Highcharts.theme1); 

    // Build the chart 
    chart = new Highcharts.Chart({}); 

}); 

Highcharts.theme2 = { 
    chart: { 
     borderWidth: 5, 
    }, 
}; 

var chart2; 
$(document).ready(function() { 

    // Apply the theme 
    var highchartsOptions = Highcharts.setOptions(Highcharts.theme2); 

    // Build the chart 
    chart = new Highcharts.Chart({}); 

}); 
9

Лучшая практика в настоящее время было бы объединить в теме с chart options:

chart1 = new Highcharts.Chart(Highcharts.merge(options1, theme1));

var options1 = { 
    // options goes here 
     chart: { 
      renderTo: 'chart1', 
      type: 'bar', 
     }, 
     title: { 
      text: 'Conversions' 
     }, 
}; 

var theme1 = { 
    // themes goes here 
}; 

var chart1 = new Highcharts.Chart(Highcharts.merge(options1, theme1)); 

таким образом, вы можете установить индивидуальные темы для каждого графика, если вам тоже нужно

Смежные вопросы