#javascript #charts #highcharts #pie-chart #logarithm
#javascript #Диаграммы #highcharts #круговая диаграмма #логарифм
Вопрос:
Мне нужно нарисовать круг (или пончик, или половину пончика, я думаю, что это один и тот же процесс) в Highcharts. Проблема в том, что данные сильно искажены, т. е. один фрагмент имеет размер = 3, а второй — размер = 1000.
конечный результат — пирог с гигантским куском, а срез почти невидим.
Есть ли способ вывести размер срезов логарифмическим способом (как для диаграмм axis)?
Комментарии:
1. Я не вижу варианта использования для этого. Пироги и пончики полезны для отображения относительных процентов между точками данных в наборе. Если одна точка данных на 2 порядка больше другой — что ж, это так, и вы должны это увидеть. Если у вас есть «логарифмическая» дуга, вы бы ввели конечного пользователя в заблуждение относительно относительной важности одной точки данных по сравнению с другой, поскольку это нарушает парадигму того, как обычно просматриваются круговые диаграммы.
2. @wergeld Я понимаю вашу точку зрения, и вы правы, но мне НУЖНО напечатать все ряды, даже если они имеют разный порядок величины
3. Интересно посмотреть, как это будет выглядеть…
4. не очень хорошо, я знаю. Конечный пончик не будет представлять реальные «данные», но, в конце концов, это то, что мне нужно 🙂
5. Если вам нужно отобразить числа, но вы визуализируете их таким образом, который на самом деле не представляет чисел, в лучшем случае все, что вы сделали, это бессмысленно украсили цифры, в худшем случае вы полностью ввели в заблуждение свою аудиторию. Лучше просто отобразить простой список или таблицу чисел, где нет бессмысленной графики, искажающей данные и сбивающей с толку потребителей данных. FWIW
Ответ №1:
Круговая диаграмма не использует axis, поэтому установка ее типа в logarithmic не сработает. Что вы можете сделать, так это преобразовать ваши данные и сохранить «реальное» значение, чтобы его можно было отобразить во всплывающей подсказке, метках данных и т.д.
var data = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],
logData = data.map(function (value) {
return {
y: Math.log(value) / Math.LN10,
realY: value // store a pure value
};
});
// later in chart options
tooltip: {
pointFormat: 'x = {point.x}, y = {point.realY}' // access the pure value in a tooltip
}
Сравнение круговых диаграмм с преобразованными данными и с «чистыми» данными: http://jsfiddle.net/rz9899j8