Aralıklar

Genel bakış

Google Grafikleri, bir serinin etrafındaki aralıkları görüntüleyebilir. Güven aralıklarını, minimum ve maksimum değerleri, yüzdelik dilim örneklemeyi veya bir seri etrafında değişen kenar boşlukları gerektiren herhangi bir şeyi göstermek için kullanılabilirler.

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

Yukarıdaki grafik basittir: Hepsi eşit önemde olan yedi veri dizisi vardır. Sıradaki bölümde, ilk serinin birincil seri olduğunu, diğer altı serinin ise aralıklar aracılığıyla karşılaştırıldığını varsayacağız.

Çizgi Aralıkları

Çizgi aralıkları bazen birden fazla denemenin varyansını göstermek için kullanılır. Aşağıdaki grafikte bir birincil seriyi ve çevresindeki aralıkları gösteriyoruz.

<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, tamamlayıcı seriye üç farklı tanımlayıcı eklediğimizi görebilirsiniz: i0, i2 ve i3. Bunları kullanarak bu seriyi farklı şekillerde stillandırabiliriz; aşağıda onlara farklı renk ve kalınlıklar veriyoruz.

Not: Genel olarak, yukarıda belirttiğimiz gibi kimliklerin yeniden kullanılması uygun değildir. i2 dört kez kullanılır. Bu yöntem işe yarar ancak gelecekte bu davranışı değiştirebiliriz.

Tek fark seçeneklerdir:

    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 geniş çubuklar ve iç sütunlar daha kısa "kene işaretleri" olarak çizilir. Geniş çubukları birleştirmek için bir "çubuk" eklenir (bu iki çubuk aynı değere sahipse pointSize seçeneği sıfır olmadığı sürece çubuk bir nokta olarak oluşturulur).

İlk ve son sütunlara karşılık gelen yatay çubukların genişliği intervals.barWidth ile kontrol edilirken, iç sütunlara karşılık gelen yatay çubukların genişliği intervals.shortBarWidth ile kontrol edilir. Bunlar atlandığında, aşağıdaki seçeneklerle yukarıdaki gibi bir grafik elde edersiniz:

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

Kutu Aralıkları

Veri tablonuzda, iç içe yerleştirilmiş bir dikdörtgen grubu olarak oluşturulan kutu aralıkları: İlk ve son sütunlar en dıştaki dikdörtgeni oluşturur ve iç sütunlar, kapsayıcı kutuları içinde daha koyu dikdörtgenler olarak oluşturulur.

Kutu 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çenekleriyle 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',
    };

Çubuk Aralıkları

Çubuk aralıkları, sütun çiftlerini hedef eksene paralel çubuklar olarak gösterir. Yüksekliği sıfır olan bir çubuk nokta olarak oluşturulur. Bu çubuk, pointSize seçeneği sıfıra ayarlanarak basılabilir.

Bunları 'sticks' style ile oluşturabilirsiniz:

    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örüntüler:

Nokta boyutu, intervals.pointSize seçeneğiyle kontrol edilebilir. 2. devre:

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

8'de şöyle görünüyor:

Alan Aralıkları

Alan aralığı, aralık verilerini iç içe yerleştirilmiş gölgeli alanlar grubu olarak oluşturur. Sütun çiftlerinin iç içe yerleştirilmesi, kutu aralıklarına benzerdir. Tek fark, çift sayıda sütunun gerekli olmasıdır.

Bu işlem, style politikasının 'area' değerine ayarlanmasıyla gerçekleştirilir:

    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.

Aşağıda, alan ve çubuk aralıklarını birleştiren bir grafik verilmiştir:

Yukarıdaki grafikte, i0 ve i1 ile etiketlenen aralıklar için 'bars' için style ve i2 için 'area' stili belirtiyoruz. Daha sonra, çubukları sınırlamak için pointSize kodunu kullanırız:

    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',
    };

i2 aralıklarının çubuk olarak gösterildiği bir çubuk aralığı çizgi grafiğini aşağıda görebilirsiniz:

    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',
    };

Seçili aralıkları arka plana yerleştirmek için düşük opaklığa sahip kutular kullanan aralıklı çizgi grafiğini aşağıda görebilirsiniz:

    // 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ık için boxWidth ile birlikte düşük opaklığa sahip 'points' stili belirterek "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 Grafiği

Son olarak, yukarıdaki "noktalar ve bıyıklar" grafiğine göre, kutu ve çubuk aralıklarını kullanarak temel bir kutu grafiği oluşturabiliriz.

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);
    }