Элементы Highcharts не выровнены - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь разбить данные, содержащиеся в dict, на несколько графиков.Каждый график имеет две серии: столбец и маркер.Если представить все данные на одном графике, все работает нормально, но если я попытаюсь разделить их, столбцы и маркер по какой-то причине не выровняются

function setup_chart(chart_container){
       return new Highcharts.chart(chart_container, {
          chart: {
            alignTicks: false,
            type: 'columnrange',
            inverted: true,
            zoomType: 'y',
            panning: true,

            },
            credits: {
                    enabled: false
            },
            title: {
                text: null
            },
            xAxis: {
                categories: [],
                className: 'chart-axis-title',
                title: {                       
                    align:'high'
                },                    
                offset: -10
            },
            navigation: {
                buttonOptions: {
                    x: 5,
                    y: -12
                }
            },
            yAxis:[{
                minRange: 1,
                max:null,
                min:null,
                allowDecimals: false,
                title: {
                    text: 'Days'
                },
                labels:{
                    formatter:function(){
                        if(this.value !=0){
                            return this.value;
                        }
                    }
                }                    
              },{
                  tickPositions: [0, 100],
                  visible: false
              }],

              tooltip: {                

              },
              exporting: {
                  scale: 3,
                  chartOptions: {
                      legend: {
                          enabled: true
                      }
                  }                            
              },
              legend: {
                  enabled: false
              },
              series: [{
                        yAxis: 1,
                        data:[]
                        },{
                        name: 'Days',
                        data: [],
                        stickyTracking: true
                        }]
          });
   }

Я передаю данныечерез jinja2 и заполните таблицу следующим образом:

var options_data_cm = {{options|tojson|safe}}[k]['cms'];
var cm_groups = {{cm_group_dict}};
var cms_details = {};
for(var key in cm_groups){
    cms_details[key] = {
        "data":[],
        "left":[],
        "right":[],
        "cols":[],
        "categories":[]
     }
}
for(var key in cms_details){
                 var crtChart = $('#'+key).highcharts(); 
                 crtChart.xAxis[0].update({title:{ text: ""+cm_groups[key] }});
                 crtChart.addSeries({
                     type: 'column',
                     yAxis: 1,                     
                     data: cms_details[key]['cols'],                     
                     zIndex: 1,
                     minPointLength: 10,
                     threshold: -0.1,
                     pointPadding: 0,
                     pointRange: 0,
                     groupPadding: 0,
                     showInLegend: false,
                     tooltip: {
                         pointFormat: false
                     },
                     states: {
                         hover: {
                             enabled: false
                         }
                     }                 
                 });
                 crtChart.addSeries({
                     name: "Study Days",
                     dataLabels: {
                         enabled: false,
                         padding: 10,
                         borderWidth: 0,
                         useHTML:false,
                         formatter:function(){ 
                                if(this.y != 0)
                                    return this.y;
                            }
                     },
                     stickyTracking: false,
                     data: cms_details[key]['data'],
                     borderWidth: 0,
                     zIndex: 5,
                     maxPointWidth: 5,
                     tooltip:{
                         followPointer:true
                     },
                     point: {
                         events: {
                             click: function() {
                                 if (url != "")
                                     window.open(url,'_blank');                                 
                             }
                         }
                     }
                 });
                 crtChart.addSeries({
                 type:'scatter',
                 stickyTracking:false,
                 tooltip:{snap:0},
                 data:cms_details[key]['left'],
                 zIndex: 1
             });
                 crtChart.addSeries({
                 type:'scatter',
                 stickyTracking:false,
                 tooltip:{snap:0},
                 data:cms_details[key]['right'],
                 zIndex: 1
             });  
                 crtChart.xAxis[0].setCategories(cms_details[key]['categories']);
             }

Вот две картинки, первая с заданием без разбивки данных на несколько диаграмм, вторая попытка разбить ее:
enter image description here
enter image description here

Я попытался проверить содержимое данных, и кажется, что все в порядке в том смысле, что обате же координаты, однако они сдвинуты.

РЕДАКТИРОВАТЬ :

Вот ссылка на jsfiddle

1 Ответ

0 голосов
/ 08 июня 2018

Мне удалось решить проблему, добавив pointPlacement: 0.2 к серии, которая была смещена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...