Trend çizgileri

Genel bakış

Trend çizgisi, verilerin genel yönünü ortaya çıkaran bir grafiğin üzerine çizilen çizgidir. Google Grafikler, Dağılım Grafikleri, Çubuk Grafikler, Sütun Grafikleri ve Çizgi Grafikler için otomatik olarak trend çizgileri oluşturabilir.

Google Grafikler üç tür trend çizgisini destekler: doğrusal, çok terimli ve üstel.

Doğrusal trend çizgileri

Doğrusal trend çizgisi, grafikteki verileri en yakın şekilde gösteren düz çizgidir. (Daha net bir ifadeyle, belirli bir noktadan bütün karelere olan karelerin toplamını en aza indirir.)

Aşağıdaki grafikte dağılım grafiği üzerinde doğrusal bir trend çizgisi görebilirsiniz. Şeker akçaağacının yaşını santralin çapına göre karşılaştırabilirsiniz. Google Grafikler tarafından hesaplanan denklemi görmek için fareyle trend çizgisinin üzerine gelebilirsiniz: Çapın 4,885 katı + 0,730.

Grafikte trend çizgisi çizmek için trendlines seçeneğini kullanın ve hangi veri dizilerinin kullanılacağını belirtin:

google.charts.setOnLoadCallback(drawChart);
function drawChart() {
  var data = google.visualization.arrayToDataTable([
    ['Diameter', 'Age'],
    [8, 37], [4, 19.5], [11, 52], [4, 22], [3, 16.5], [6.5, 32.8], [14, 72]]);

  var options = {
    title: 'Age of sugar maples vs. trunk diameter, in inches',
    hAxis: {title: 'Diameter'},
    vAxis: {title: 'Age'},
    legend: 'none',
    trendlines: { 0: {} }    // Draw a trendline for data series 0.
  };

  var chart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
  chart.draw(data, options);
}

Doğrusal trend çizgileri, en yaygın trend çizgi türüdür. Ancak bazen verilerin açıklanması için en iyi yöntem bir eğridir. Bunun için başka bir trend çizgisi gerekir.

Üstel trend çizgileri

Verileriniz en iyi şekilde eax+b biçiminin bir üssüyle açıklanıyorsa aşağıda gösterildiği gibi üssel bir trend çizgisi belirtmek için type özelliğini kullanabilirsiniz:

Not: Doğrusal trend çizgilerinin aksine, üstel trend çizgilerini hesaplamanın birkaç farklı yöntemi vardır. Şu anda yalnızca bir yöntem sunuyoruz ancak ileride daha fazlasını destekleyeceğiz. Bu nedenle, mevcut üstel trend çizgisinin adı veya davranışı değişebilir.

Bu grafik için aynı zamanda açıklamada üstel eğriyi görüntülemek üzere visibleInLegend: true kullanıyoruz.

google.charts.setOnLoadCallback(drawChart);
function drawChart() {
  var data = google.visualization.arrayToDataTable([
    ['Generation', 'Descendants'],
    [0, 1], [1, 33], [2, 269], [3, 2013]
 ]);

  var options = {
    title: 'Descendants by Generation',
    hAxis: {title: 'Generation', minValue: 0, maxValue: 3},
    vAxis: {title: 'Descendants', minValue: 0, maxValue: 2100},
    trendlines: {
      0: {
        type: 'exponential',
        visibleInLegend: true,
      }
    }
  };

  var chart = new google.visualization.ScatterChart(document.getElementById('chart_div2'));
  chart.draw(data, options);
}

Rengi değiştirme

Trend çizgileri varsayılan olarak veri dizileriyle aynı renktedir ancak daha açıktır. Bunu color özelliğiyle geçersiz kılabilirsiniz. Burada, sayısal olarak verimli bir dönem boyunca yıllara göre kaç ÷ basamağının hesaplandığını ve üstel çizgi yeşilini renklendirdiğimizi listeliyoruz.

Trend çizgilerinin teknik özellikleri şöyledir:

    trendlines: {
      0: {
        type: 'exponential',
        color: 'green',
      }
    }

Çok terimli trend çizgileri

Çok terimli bir trend çizgisi oluşturmak için polynomial ve bir degree türü belirtin. Bazen yanıltıcı sonuçlara yol açabileceğinden, dikkatli kullanın. Yaklaşık olarak doğrusal bir veri kümesinin kübik (3. derece) trend çizgisiyle çizildiği aşağıdaki örnekte:

Son veri noktasından sonraki düşüşün ancak yatay eksende yapay olarak 15'e çıktığı için görülebileceğini unutmayın. hAxis.maxValue 15 olarak ayarlanmasaydı aşağıdaki gibi olurdu:

Aynı veriler, aynı polinom, veriler üzerinde farklı aralık.

Seçenekler
  var options = {
    title: 'Age vs. Weight comparison',
    legend: 'none',
    crosshair: { trigger: "both", orientation: "both" },
    trendlines: {
      0: {
        type: 'polynomial',
        degree: 3,
        visibleInLegend: true,
      }
    }
  };
Tam HTML
<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 = google.visualization.arrayToDataTable([
         ['Age', 'Weight'],
         [ 8,      12],
         [ 4,      5.5],
         [ 11,     14],
         [ 4,      5],
         [ 3,      3.5],
         [ 6.5,    7]
       ]);

       var options = {
         title: 'Age vs. Weight comparison',
         legend: 'none',
         crosshair: { trigger: 'both', orientation: 'both' },
         trendlines: {
           0: {
             type: 'polynomial',
             degree: 3,
             visibleInLegend: true,
           }
         }
       };

       var chart = new google.visualization.ScatterChart(document.getElementById('polynomial2_div'));
       chart.draw(data, options);
     }
   </script>
 </head>
 <body>
  <div id='polynomial2_div' style='width: 900px; height: 500px;'></div>
 </body>
</html>

Opaklığı ve çizgi genişliğini değiştirme

Trend çizgisinin şeffaflığını değiştirmek için opacity değerini 0,0 ile 1,0 arasında, çizgi genişliğini ise lineWidth seçeneğiyle ayarlayabilirsiniz.

    trendlines: {
      0: {
        color: 'purple',
        lineWidth: 10,
        opacity: 0.2,
        type: 'exponential'
      }
    }

lineWidth seçeneği çoğu kullanım için yeterli olacaktır. Ancak görünümü kullanmak isterseniz trend çizgisinin içindeki seçilebilir noktaların boyutunu özelleştirmek için kullanılabilecek bir pointSize seçeneği vardır:

Hem dalga hem de parçacık olması gibi, trend çizgisi hem çizgi hem de noktadır. Kullanıcıların ne göreceği, nasıl etkileşimde bulunduklarına bağlıdır: Normalde bir çizgidir ancak fareyle çizginin üzerine geldiğinizde belirli bir nokta vurgulanır. Bu çap, aşağıdakine eşittir:

  • ve trend çizgisi tanımlanırsa pointSize.
  • tanımlanmışsa dünya genelinde pointSize
  • 7

Ancak global veya trend pointSize seçeneğini belirlerseniz trend çizgisinin lineWidth özelliğinden bağımsız olarak tüm seçilebilir noktalar gösterilir.

Seçenekler
  var options = {
    legend: 'none',
    hAxis: { ticks: [] },
    vAxis: { ticks: [] },
    pointShape: 'diamond',
    trendlines: {
      0: {
        type: 'polynomial',
        degree: 3,
        visibleInLegend: true,
        pointSize: 20, // Set the size of the trendline dots.
	opacity: 0.1
      }
    }
  };
Tam HTML
<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 = google.visualization.arrayToDataTable([
          ['X', 'Y'],
          [0, 4],
          [1, 2],
          [2, 4],
          [3, 6],
          [4, 4]
        ]);

        var options = {
          legend: 'none',
          hAxis: { ticks: [] },
          vAxis: { ticks: [] },
          colors: ['#703583'],
          pointShape: 'diamond',
          trendlines: {
            0: {
              type: 'polynomial',
              degree: 3,
              visibleInLegend: true,
              pointSize: 20, // Set the size of the trendline dots.
              opacity: 0.1
            }
          }
      };

      var chart = new google.visualization.ScatterChart(document.getElementById('chart_pointSize'));

      chart.draw(data, options);
    }
    </script>
  </head>
  <body>
    <div id="chart_pointSize" style="width: 900px; height: 500px;"></div>
  </body>
</html>

Puanları görünür hale getirme

Trend çizgileri, grafikte çok sayıda nokta damgalanır. Trend çizgisinin pointsVisible seçeneği, belirli bir trend çizgisinin noktalarının görünür olup olmayacağını belirler. Tüm trend çizgileri için varsayılan seçenek true olsa da ilk trend çizginiz için nokta görünürlüğünü devre dışı bırakmak istiyorsanız trendlines.0.pointsVisible: false özelliğini ayarlayın.

Aşağıdaki grafikte, görünürlüğün trend bazında kontrol edildiği gösterilmektedir.

Seçenekler
        var options = {
          height: 500,
          legend: 'none',
          colors: ['#9575cd', '#33ac71'],
          pointShape: 'diamond',
          trendlines: {
            0: {
              type: 'exponential',
              pointSize: 20,
              opacity: 0.6,
              pointsVisible: false
            },
            1: {
              type: 'linear',
              pointSize: 10,
              pointsVisible: true
            }
          }
        };
    
Tam HTML
<html>
  <head>
    <meta charset="utf-8"/>
    <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 = google.visualization.arrayToDataTable([
          ['X', 'Y', 'Z'],
          [0, 4, 5],
          [1, 2, 6],
          [2, 4, 8],
          [3, 6, 10],
          [4, 4, 11],
          [5, 8, 13],
          [6, 12, 15],
          [7, 15, 19],
          [8, 25, 21],
          [9, 34, 23],
          [10, 50, 27]
        ]);

        var options = {
          height: 500,
          legend: 'none',
          colors: ['#9575cd', '#33ac71'],
          pointShape: 'diamond',
          trendlines: {
            0: {
              type: 'exponential',
              pointSize: 20,
              opacity: 0.6,
              pointsVisible: false
            },
            1: {
              type: 'linear',
              pointSize: 10,
              pointsVisible: true
            }
          }
        };

        var chart = new google.visualization.ScatterChart(document.getElementById('chart_div'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div"></div>
  </body>
</html>

    

Etiketi değiştirme

Varsayılan olarak visibleInLegend seçerseniz etiket trend çizgisinin denklemini ortaya çıkarır. Farklı bir etiket belirtmek için labelInLegend kullanabilirsiniz. Burada, iki serinin her biri için bir trend çizgisi görüyoruz. Bu şekilde, başlıktaki etiketleri "Hata satırı" (0 serisi için) ve "Test serisi" (1. dizi) olarak ayarladık.

    trendlines: {
      0: {
        labelInLegend: 'Bug line',
        visibleInLegend: true,
      },
      1: {
        labelInLegend: 'Test line',
        visibleInLegend: true,
      }
    }

İlişkiler

İstatistikte R2 adlı belirleme katsayısı, bir trend çizgisinin verilerle ne kadar yakından eşleştiğini tanımlar. Kusursuz korelasyon 1,0 ve mükemmel karşıtlık ise 0,0'dır.

showR2 seçeneğini true olarak ayarlayarak grafiğinizin lezzetinde R2 gösterebilirsiniz.

<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 = google.visualization.arrayToDataTable([
          ['Age', 'Weight'],
          [ 8,      12],
          [ 4,      5.5],
          [ 11,     14],
          [ 4,      5],
          [ 3,      3.5],
          [ 6.5,    7]
        ]);

        var options = {
          hAxis: {minValue: 0, maxValue: 15},
          vAxis: {minValue: 0, maxValue: 15},
          chartArea: {width:'50%'},
          trendlines: {
            0: {
              type: 'linear',
              showR2: true,
              visibleInLegend: true
            }
          }
        };

        var chartLinear = new google.visualization.ScatterChart(document.getElementById('chartLinear'));
        chartLinear.draw(data, options);

        options.trendlines[0].type = 'exponential';
        options.colors = ['#6F9654'];

        var chartExponential = new google.visualization.ScatterChart(document.getElementById('chartExponential'));
        chartExponential.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chartLinear" style="height: 350px; width: 800px"></div>
    <div id="chartExponential" style="height: 350px; width: 800px"></div>
  </body>
</html>