Aralıklar

Genel bakış

Google Listeleri bir serinin etrafında aralıklar gösterebilir. Bunlar; güven aralıklarını, bir değerin çevresindeki minimum ve maksimum değerleri, yüzdelik örneklemeyi veya bir serinin değişken marjını gerektiren diğer öğeleri göstermek için kullanılabilir.

Altı aralık stili vardır: çizgi, çubuk, kutu, çubuk, nokta ve alan. Aşağıda her biriyle ilgili örnekler verilmiştir. Her örnekte, herhangi bir aralık olmadan burada gösterilen aynı veri kümesini kullanacağız:

Yukarıdaki tablo basittir: Her biri önem açısından eşit olan yedi veri dizisi içerir. Sonraki örnekte ilk serinin birincil dizi, diğer altının da aralıklar aracılığıyla karşılaştırıldığını varsayarız.

Satır Aralıkları

Satır aralıkları bazen birden fazla denemenin varyansını göstermek için kullanılır. Aşağıdaki grafikte birincil seri ve aralıkları verilmiştir.

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['corechart']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('number', 'x');
        data.addColumn('number', 'values');
        data.addColumn({id:'i0', type:'number', role:'interval'});
        data.addColumn({id:'i1', type:'number', role:'interval'});
        data.addColumn({id:'i2', type:'number', role:'interval'});
        data.addColumn({id:'i2', type:'number', role:'interval'});
        data.addColumn({id:'i2', type:'number', role:'interval'});
        data.addColumn({id:'i2', type:'number', role:'interval'});
  
        data.addRows([
            [1, 100, 90, 110, 85, 96, 104, 120],
            [2, 120, 95, 130, 90, 113, 124, 140],
            [3, 130, 105, 140, 100, 117, 133, 139],
            [4, 90, 85, 95, 85, 88, 92, 95],
            [5, 70, 74, 63, 67, 69, 70, 72],
            [6, 30, 39, 22, 21, 28, 34, 40],
            [7, 80, 77, 83, 70, 77, 85, 90],
            [8, 100, 90, 110, 85, 95, 102, 110]]);
  
        // The intervals data as narrow lines (useful for showing raw source data)
        var options_lines = {
            title: 'Line intervals, default',
            curveType: 'function',
            lineWidth: 4,
            intervals: { 'style':'line' },
            legend: 'none'
        };
  
        var chart_lines = new google.visualization.LineChart(document.getElementById('chart_lines'));
        chart_lines.draw(data, options_lines);
      }
    </script>
  </head>
  <body>
    <div id="chart_lines" style="width: 900px; height: 500px;"></div>
  </body>
</html>
  

Yukarıdaki verilerde, ek serilere üç farklı tanımlayıcı eklediğimizi görebilirsiniz: i0, i2 ve i3. Bunları, bu serileri farklı şekillerde tasarlamak için kullanabiliriz. Aşağıda onlara farklı renkler ve kalınlıklar veriyoruz.

Not: Genellikle, yukarıda sahip olduğumuz şekilde kimlikleri yeniden kullanmak kötü bir davranıştır ve i2 dört kez kullanılmaktadır. Bu şekilde çalışır, ancak gelecekte bu davranışı değiştirebiliriz.

Tek fark seçenekler arasındaki fark:

    var options_lines = {
        title: 'Line intervals, tailored',
        lineWidth: 4,
        curveType:'function',
        interval: {
            'i0': { 'style':'line', 'color':'#D3362D', 'lineWidth': 0.5 },
            'i1': { 'style':'line', 'color':'#F1CA3A', 'lineWidth': 1 },
            'i2': { 'style':'line', 'color':'#5F9654', 'lineWidth': 2 },
        },
        legend: 'none',
    };

Çubuk Aralıkları

Çubuk aralıkları, verilerinizin etrafında hata çubukları oluşturur. Aralığın ilk ve son sütunları, alan eksenine paralel olarak geniş çubuklar olarak, iç sütunlar ise daha kısa "işaretler" olarak çizilir. Geniş çubukları birleştirmek için bir "çubuk" eklenir (pointSize seçeneği sıfır olmadığı sürece bu iki çubuk aynı değere sahipse çubuk, nokta olarak oluşturulur).

İlk ve son sütunlara karşılık gelen yatay çubukların genişliği intervals.barWidth ve iç sütunlara karşılık gelen yatay çubukların genişliği intervals.shortBarWidth ile kontrol edilir. Bu değişiklikler kaldırıldığında yukarıdaki gibi bir grafik açılır ve şu seçenekler gösterilir:

    var options_bars = {
        title: 'Bars, default',
        curveType: 'function',
        series: [{'color': '#D9544C'}],
        intervals: { style: 'bars' },
        legend: 'none',
    };

Box Aralıkları

Veri tablonuzdaki sütunlar, iç içe yerleştirilmiş bir dizi dikdörtgen olarak kutu aralıklarında oluşturulur: İlk ve son sütunlar en dıştaki dikdörtgeni, iç sütunlar ise içerdikleri kutularda koyu dikdörtgenler olarak oluşturulur.

Box aralıklarının nasıl belirtileceği aşağıda açıklanmıştır:

    var options = {
        series: [{'color': '#1A8763'}],
        intervals: { style: 'boxes' },
        legend: 'none',
    };

intervals.lineWidth ve intervals.barWidth seçeneklerini kullanarak kutuları daha belirgin hale getirebilirsiniz:

İlgili seçenekler:

    var options = {
        title:'Boxes, thick',
        curveType:'function',
        lineWidth: 4,
        series: [{'color': '#1A8763'}],
        intervals: { 'lineWidth':2, 'barWidth': 0.5, style: 'boxes' },
        legend: 'none',
    };

Yapışkan Aralıklar

Yapışma aralıkları, sütun çiftlerini hedef eksene paralel bir çubuk çubuğu olarak gösterir. Yüksekliğe sahip bir çubuk nokta olarak oluşturulur. Bu, pointSize seçeneğinin sıfır olarak ayarlanmasıyla engellenebilir.

Bunları şu şekilde oluşturabilirsiniz: style/'sticks':

    var options_sticks = {
        title:'Sticks, default',
        curveType:'function',
        series: [{'color': '#E7711B'}],
        intervals: { style: 'sticks' },
        legend: 'none',
    };

Nokta Aralıkları

Nokta aralıkları, aralık verilerini küçük daireler olarak gösterir:

Nokta boyutu, intervals.pointSize seçeneği ile kontrol edilebilir. Burada 2:

    var options_points = {
        title:'Points, default',
        curveType:'function',
        lineWidth: 4,
        series: [{'color': '#D3362D'}],
        intervals: { 'style':'points', pointSize: 2 },
        legend: 'none',
    };

Saat 8'deki gibi görünür:

Alan Aralıkları

Alan aralığı, aralık verilerini iç içe yerleştirilmiş gölgeli alanlar olarak oluşturur. İki sütun sütunu iç içe yerleştirmek kutu sayılarına benzer, ancak tek sayı için sütun gerekir.

Bunun için style, 'area' ayarlanır:

    var options = {
        title:'Area, default',
        curveType:'function',
        series: [{'color': '#F1CA3A'}],
        intervals: { 'style':'area' },
        legend: 'none',
    };

Aralık Stillerini Birleştirme

Daha da fazla özelleştirme için aralık stillerini tek bir grafikte birleştirebilirsiniz.

Alan ve çubuk aralıklarını birleştiren bir grafik:

Yukarıdaki grafikte i0 ve i1 ile etiketlenmiş aralıklar için style 'bars' ve i2 için 'area' stili belirtiyoruz. Ardından, çubukları sınırlamak için pointSize kullanıyoruz:

    var options = {
        title:'Bar/area interval chart',
        curveType:'function',
        intervals: { 'color':'series-color' },
        interval: {
            'i0': { 'color': '#4374E0', 'style':'bars', 'barWidth':0, 'lineWidth':4, 'pointSize':10, 'fillOpacity':1 },
            'i1': { 'color': '#E49307', 'style':'bars', 'barWidth':0, 'lineWidth':4, 'pointSize':10, 'fillOpacity':1 },
            'i2': { 'style':'area', 'curveType':'function', 'fillOpacity':0.3 }},
        legend: 'none',
    };

Burada, çubuk olarak temsil edilen i2 aralıklarının bulunduğu bir çubuk aralık çizgi grafiği gösterilmektedir:

    var options = {
        title:'Sticks, horizontal',
        curveType:'function',
        lineWidth: 4,
        series: [{'color': '#E7711B'}],
        intervals: { 'lineWidth': 4, 'barWidth': 0.5 },
        interval: {
            'i2': { 'style':'sticks', 'color':'grey', 'boxWidth': 2.5,
            'lineWidth': 1 }
        },
        legend: 'none',
    };

Aşağıda, seçilen aralıkları arka plana yerleştirmek için düşük opaklık kutuları kullanan bir aralık çizgi grafiği verilmiştir:

    // Focus is the error bars, but boxes are visible in the background.
    var options_boxes_background = {
        title:'Background boxes',
        curveType:'function',
        lineWidth: 4,
        series: [{'color': '#1A8763'}],
        intervals: { 'lineWidth':2, 'barWidth': 0.5 },
        interval: {
            'i2': { 'style':'boxes', 'color':'grey', 'boxWidth': 2.5,
            'lineWidth': 0, 'fillOpacity': 0.2 }
        },
        legend: 'none',
    };

Bir aralıkla ilgili olarak düşük opaklık 'points' stili boxWidth ile birlikte "noktalar ve bıyıklar" aralık grafiği oluşturabiliriz:

    var options = {
        title:'Points and whiskers',
        curveType:'function',
        lineWidth: 4,
        series: [{'color': '#D3362D'}],
        intervals: { 'lineWidth':2, 'barWidth': 0.5 },
        interval: {
            'i2': { 'style':'points', 'color':'grey', 'pointSize': 10,
            'lineWidth': 0, 'fillOpacity': 0.3 }
        },
        legend: 'none',
    };

Kutu Alanı

Son olarak, yukarıdaki "puanlar ve bıyıklar" grafiğini temel alarak, temel bir kutu grafiği oluşturmak için kutu ve çubuk aralıkları kullanabiliriz.

Seçenekler
      var options = {
          title:'Box Plot',
          height: 500,
          legend: {position: 'none'},
          hAxis: {
            gridlines: {color: '#fff'}
          },
          lineWidth: 0,
          series: [{'color': '#D3362D'}],
          intervals: {
            barWidth: 1,
            boxWidth: 1,
            lineWidth: 2,
            style: 'boxes'
          },
          interval: {
            max: {
              style: 'bars',
              fillOpacity: 1,
              color: '#777'
            },
            min: {
              style: 'bars',
              fillOpacity: 1,
              color: '#777'
            }
          }
      };
    
Tam Komut Dosyası Gövdesi
    google.charts.load('current', {'packages':['corechart']});
    google.charts.setOnLoadCallback(drawBoxPlot);

    function drawBoxPlot() {

      var array = [
        ['a', 100, 90, 110, 85, 96, 104, 120],
        ['b', 120, 95, 130, 90, 113, 124, 140],
        ['c', 130, 105, 140, 100, 117, 133, 139],
        ['d', 90, 85, 95, 85, 88, 92, 95],
        ['e', 70, 74, 63, 67, 69, 70, 72],
        ['f', 30, 39, 22, 21, 28, 34, 40],
        ['g', 80, 77, 83, 70, 77, 85, 90],
        ['h', 100, 90, 110, 85, 95, 102, 110]
      ];

      var data = new google.visualization.DataTable();
      data.addColumn('string', 'x');
      data.addColumn('number', 'series0');
      data.addColumn('number', 'series1');
      data.addColumn('number', 'series2');
      data.addColumn('number', 'series3');
      data.addColumn('number', 'series4');
      data.addColumn('number', 'series5');
      data.addColumn('number', 'series6');

      data.addColumn({id:'max', type:'number', role:'interval'});
      data.addColumn({id:'min', type:'number', role:'interval'});
      data.addColumn({id:'firstQuartile', type:'number', role:'interval'});
      data.addColumn({id:'median', type:'number', role:'interval'});
      data.addColumn({id:'thirdQuartile', type:'number', role:'interval'});

      data.addRows(getBoxPlotValues(array));

      /**
       * Takes an array of input data and returns an
       * array of the input data with the box plot
       * interval data appended to each row.
       */
      function getBoxPlotValues(array) {

        for (var i = 0; i < array.length; i++) {

          var arr = array[i].slice(1).sort(function (a, b) {
            return a - b;
          });

          var max = arr[arr.length - 1];
          var min = arr[0];
          var median = getMedian(arr);

          // First Quartile is the median from lowest to overall median.
          var firstQuartile = getMedian(arr.slice(0, 4));

          // Third Quartile is the median from the overall median to the highest.
          var thirdQuartile = getMedian(arr.slice(3));

          array[i][8] = max;
          array[i][9] = min
          array[i][10] = firstQuartile;
          array[i][11] = median;
          array[i][12] = thirdQuartile;
        }
        return array;
      }

      /*
       * Takes an array and returns
       * the median value.
       */
      function getMedian(array) {
        var length = array.length;

        /* If the array is an even length the
         * median is the average of the two
         * middle-most values. Otherwise the
         * median is the middle-most value.
         */
        if (length % 2 === 0) {
          var midUpper = length / 2;
          var midLower = midUpper - 1;

          return (array[midUpper] + array[midLower]) / 2;
        } else {
          return array[Math.floor(length / 2)];
        }
      }

      var options = {
          title:'Box Plot',
          height: 500,
          legend: {position: 'none'},
          hAxis: {
            gridlines: {color: '#fff'}
          },
          lineWidth: 0,
          series: [{'color': '#D3362D'}],
          intervals: {
            barWidth: 1,
            boxWidth: 1,
            lineWidth: 2,
            style: 'boxes'
          },
          interval: {
            max: {
              style: 'bars',
              fillOpacity: 1,
              color: '#777'
            },
            min: {
              style: 'bars',
              fillOpacity: 1,
              color: '#777'
            }
          }
      };

      var chart = new google.visualization.LineChart(document.getElementById('box_plot'));

      chart.draw(data, options);
    }