Дублированные числа в Google Charts Вертикальная ось

Я работал над исправлением с визуализациями Google для комбинированной диаграммы (столбец / линия), когда одна из осей стала странной и начала повторять числа (то есть: 1, 1, 2, 2 вместо 1, 2, 3, 4). Пожалуйста, смотрите изображение ниже

http://913a0d0e6c09b4bcc628-22cb2ea15f760b88c7ec5dccd300db1d.r25.cf1.rackcdn.com/duplicate_axes.png

Вот настройки параметров диаграммы:

// Instantiate and draw our chart, passing in some options. 
var frequency_by_day_options = {
    vAxes: [
        {format:'#,###', title:"Call Volume"}, 
        {format: '#%', title:'Missed Call Rate',
          viewWindow:{
            max:1,
          }}
        ],      
    legend: {position: 'none'},
    chartArea: { height:'60%', width:'60%'},
    width: 800,
    height: 350,
    backgroundColor: 'transparent',
    bar: { groupWidth: '90%'},
    isStacked: true,
    seriesType: 'bars',
    series: {0: {type:'bar', targetAxisIndex:0}, 1: {type:'line', targetAxisIndex:1},},
    colors: ['blue', 'green'],
    animation:{
        duration: 1000,
        easing: 'out',},
    };

Я понятия не имею, что здесь происходит. Даже когда я закомментирую все опции vAxis, я все еще наблюдаю это поведение. Любые идеи о том, что я делаю не так? Это сводит меня с ума:)

2 ответа

Я столкнулся с той же проблемой, когда у нас меньше ящиков (скажем, 1 или 2). Я решил это с параметром maxValue. Просто добавьте параметр maxValue = 4 в ваш vaxis. Это добавит 5 (от 0 до 4) линий сетки всегда. Если ваше maxValue больше 4, оно будет настроено автоматически. Мой работает нормально с опциями (название: "Нет коробок", формат: "#", minValue:0, maxValue:4). minValue = 0 не допустит негативов, так как их нет из блоков.

Я собираюсь догадаться, что vAxis слева - это не 4, а фактически 2. Эти 5 меток - 0, 0.5, 1, 1.5, 2.

Поскольку у вас установлен формат "#,###", он не будет отображать десятичные дроби. Если вы измените его на "#,###.#", То он покажет 0, 0,5, 1, 1,5, 2.

Существует дюжина способов ее решения, но проще всего убедиться, что значения вашей оси являются только целыми числами с помощью функции javascript, подобной этой:

// Take the Max/Min of all data values in all graphs
var totalMax = 3;
var totalMin = -1;

// Figure out the largest number (positive or negative)
var biggestNumber = Math.max(Math.abs(totalMax),Math.abs(totalMin));

// Round to an exponent of 10 appropriate for the biggest number
var roundingExp = Math.floor(Math.log(biggestNumber) / Math.LN10);
var roundingDec = Math.pow(10,roundingExp);

// Round your max and min to the nearest exponent of 10
var newMax = Math.ceil(totalMax/roundingDec)*roundingDec;
var newMin = Math.floor(totalMin/roundingDec)*roundingDec;

// Determine the range of your values
var range = newMax - newMin;

// Calculate the best factor for number of gridlines (2-5 gridlines)
// If the range of numbers divided by 2 or 5 is a whole number, use it
for (var i = 2; i <= 5; ++i) {
    if ( Math.round(range/i) = range/i) {
        var gridlines = i
    }
}
Другие вопросы по тегам