2016-08-08 2 views
1

Я работаю с Highcharts и с целью сделать диаграмму, подобную этой: Highcharts donut chartHighcharts пончик Диаграмма настройки

Теперь я играл вокруг с целым испытанием на некоторое время теперь, и я пришел был в состоянии достигнуть следующий пункт: http://jsfiddle.net/ccjSy/24/

$(function() { 
    $(document).ready(function() { 
     var chart = null;    
     var categories = ['Body Fat', 'Lean Mass'], 
      name = 'Body Fat vs. Lean Mass', 
      data = [{ 
       y: 69, 
       color: '#F0CE0C', 
       drilldown: { 
        name: 'Body Fat', 
        color: '#F0CE0C' 
       } 
      }, { 
       y: 207, 
       color: '#23A303', 
       drilldown: { 
        name: 'Lean Mass' , 
        color: '#23A303' 
       } 
      }]; 


     // Build the data array 
     var browserData = []; 
     for (var i = 0; i < data.length; i++) { 

      // add browser data 
      browserData.push({ 
       name: categories[i], 
       y: data[i].y, 
       color: data[i].color 
      }); 

     } 

     // Create the chart 
     chart = new Highcharts.Chart({ 
      chart: { 
       renderTo: 'donutchart', 
       type: 'pie', 
       spacingTop: 0 
      }, 
      title: { 
       text: 'Your Body Fat vs Lean Mass', 
       style: {"color": '#7d7d7d'} 
      }, 
      series: [{ 
       name: 'Weight', 
       data: browserData, 
       dataLabels: { 
        style: { 
         fontFamily: 'ArialMT', 
         fontSize: '15px', 
         fontWeight: 'bold', 
         color: '#7d7d7d' 
        } 
       }, 
       innerSize: '70%' 
      }], 
      tooltip: { 
       valueSuffix: ' lbs' 
      }, 
      plotOptions: { 
       series: { 
        cursor: 'pointer' 
       } 
      } 
     }); 
    }); 
}); 

Я имею в виде того, чтобы оставить пространство пустым в кольцевой диаграмме и вставки пользовательского круга с маркировкой веса. Однако, я не уверен, как решать следующие проблемы:
1) Оставлять более определенные пробелы в моих между двумя колоннами
2) Как правильно выровнять две мои метки данных? (Как вы можете видеть в модели, они находятся в прямой линии с прикрепленными нейтральными линиями)
3) Как отображать данные под двумя метками как с фунтами, так и с процентами, как показано на изображении.

ответ

2

Ответ каждого из трех вопросов:

  1. "? Более белое пространство между колоннами" - добавить plotOptions.pie.borderWidth элемент. Значение по умолчанию - 1. Я использовал 5, чтобы дать ему больше свободного пространства.
  2. Правильно выровнять две метки данных? "- Вы можете вычислить пользовательский startAngle на основе двух значений данных, которые дадут вам правильный угол для начала. Поскольку у вас есть только два значения данных в серии, это легко.

    Вычислить StartAngle для круговой диаграммы

    var startAngle = 0 - (90 + (180 * (data[0].y/(data[0].y + data[1].y)))); 
    

    Обратите внимание, что если вы измените значение y для первого объекта данных, «Body Fat» часть круговой диаграммы будет по-прежнему поддерживать это правильное положение, даже так как часть диаграммы растет больше или меньше.

  3. «Отображение данных под двумя этикеток с пользовательским форматированием?» - использовать plotOptions.pie.format применять пользовательское форматирование к ценностной пироге этикетке.

    format: '<div style="position: relative; top: -20px; text-align: center">{point.name}<br><b><span style="font-size: 29px">{point.percentage:.0f}%</span></b> ({point.y} lbs)</div>' 
    

Вот рабочий JSFiddle, чтобы увидеть результаты. Вам нужно будет добавить темный серый круг за круговой диаграммой и добавить текст «Общий вес», но это не должно быть слишком сложно.

Поскольку я уверен, что вам будет интересно об этом, я должен упомянуть, что под заголовком круговых диаграмм много белого пространства, потому что он оставляет достаточно места для других ярлыков, которые могут появляться над или под пирогом. Поскольку вы используете только два значения, которые всегда будут слева/справа от круговой диаграммы, это не меняет того факта, что HighCharts готовится к использованию других меток, которые могут отображаться в окрестностях.

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