2013-12-07 3 views
0

у меня есть диаграммы с кодом:Google графики - только один набор данных, показанные

function drawChart() { 

     var data = new google.visualization.DataTable(); 
     data.addColumn('number', 'Intensidade'); 
     data.addColumn('number', 'Afundamento %'); 
     data.addColumn('number', 'Elevação %'); 
     var fool =[<?php echo $jsRows_intensidade_eleva; ?>]; 
     data.addRows(fool); 
     var foo = [<?php echo $jsRows_intensidade;?>]; 
     data.addRows(foo); 




    var options = { 
     title: '', 
     hAxis: {title: 'Intensidade (p.u.)', minValue: 0, maxValue: 2}, 
     vAxis: {title: 'Prob. de ocorrência em %', minValue: 0, maxValue: 100} 

    }; 

    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div_intensidade_NRS-048')); 
    chart.draw(data, options); 
    } 
    google.load("visualization", "1", {packages:["corechart"], callback: drawChart}); 

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

//$jsRows[] = "['Duração','Afundamento']"; 
for($i=0;$i<count($datay_afunda_intensidade);$i++){ 
$jsRows_intensidade[] = "[{$datax_afunda_intensidade[$i]},{$datay_afunda_intensidade[$i]},null]"; 
} 

//$jsRows_eleva[] ="['Duração','Elevação']"; 
for($i=0;$i<count($datay_eleva_intensidade);$i++){ 
$jsRows_intensidade_eleva[] = "[{$datax_eleva_intensidade[$i]},null,{$datay_eleva_intensidade[$i]}]"; 
} 


$jsRows_intensidade = implode(",",$jsRows_intensidade); 
$jsRows_intensidade_eleva = implode(",",$jsRows_intensidade_eleva); 

, но он показывает только набор строк представленный в колонке «Afundamento%», он игнорирует второй. Кто-нибудь видит ошибку в этом коде? Он работал немного назад. Заранее спасибо.

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

jsRows_intensidade = [0.53,12.5, нуль], [0.59,25, нуль], [0.54,12.5, нуль], [0.55,12.5, нуль], [1,12.5, нуль], [0.36,12.5, нуль], [0.01,12.5, нуль]

js_Rows_intensidade_eleva = [1,5, NULL, 50], [1, NULL, 50]

+0

Не могли бы вы привести несколько примеров того, что выводится с помощью 'echo $ jsRows_intensidade_eleva;' и 'echo $ jsRows_intensidade;'? – asgallant

+0

@asgallant, пожалуйста, см. Редактирование. – GustavoxD

ответ

1

Это, вероятно, случай, когда диаграмма просто слишком узкая, чтобы отображать ваши данные. API измеряет наименьшее расстояние между любыми двумя точками данных и присваивает ему максимальную ширину полосы штрихов в единицах данных (в вашем случае 0,01). Длина осевой оси (ось X для столбцов) разделяется на это значение, чтобы получить количество всех групп штрихов, которые можно нарисовать, а ширина пикселя отдельной группы штрихов определяется путем деления ширины диаграммы площадь (часть, в которой нарисованы полосы), на максимальное количество групп баров. В каждой группе баров API резервирует пространство для заполнения между группами баров (по умолчанию около 33%), а затем резервирует пространство для баров, начиная с первой серии данных (бары получают пространство зарезервированным, даже если у них нет данных на данной оси стоимость). Если группа баров заканчивается в пространстве, то все остальные бары имеют ширину 0, что и происходит с вашей второй серией.

Есть несколько способов решения этой проблемы:

  1. Вы можете увеличить ширину вашей карты, или используйте опцию chartArea.width, чтобы увеличить ширину области диаграммы.
  2. Если ваша диаграмма достаточно широка, вы можете дать группам баров немного больше места для рисования баров, увеличив процент от ширины группы, выделенной для баров, установив опцию bar.groupWidth на большее значение, чем ее значение по умолчанию (~ 67%, не более 100%) (например: http://jsfiddle.net/asgallant/umVHX/).
  3. Вы можете использовать ChartRangeFilter, чтобы пользователь мог панорамировать и масштабировать диаграмму (например: http://jsfiddle.net/asgallant/umVHX/1/).
+0

Вот и все! :) Еще раз спасибо за очень хороший ответ и примеры. У меня есть вариант 2. – GustavoxD

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