קווי מגמה

סקירה כללית

קו מגמה הוא קו שממוקם בתרשים וחושף את הכיוון הכולל של הנתונים. תרשימים של Google יכולים ליצור באופן אוטומטי קווי מגמה עבור תרשימי פיזור, תרשימי עמודות, תרשימי עמודות ותרשימי קו.

ב-Google מידע יש שלושה סוגים של קווי מגמה: לינארי, פולינומי או מעריכי.

מגמות קוויות

קו מגמה לינארי הוא הקו הישיר שקרוב ביותר לנתונים בתרשים. (ליתר דיוק, זו השורה שמצמצמת את סכום המרחקים הריבועיים מכל נקודה בה).

בתרשים שלמטה ניתן לראות קו מגמה ליניארי על תרשים פיזור, המשווה את גיל עצי המייפל הסוכרים לקוטר של הגזעים שלהם. אפשר להעביר את העכבר מעל קו המגמה כדי לראות את המשוואה שמחושבת על ידי תרשימים: 4.885 כפול הקוטר + 0.730.

כדי לשרטט קו מגמה בתרשים, משתמשים באפשרות trendlines ומציינים באילו סדרות נתונים להשתמש:

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

קווי מגמה ליניאריים הם הסוג הנפוץ ביותר של קו מגמה. אבל לפעמים עקומה היא השיטה הטובה ביותר לתיאור נתונים, ולכן יש צורך בסוג נוסף של קו מגמה.

מגמות מעריכיות

אם הנתונים שלכם מוסברים בצורה הטובה ביותר באמצעות הפונקציה aax+b, תוכלו להשתמש במאפיין type כדי לציין קו מגמה מעריכי, כפי שמוצג בהמשך:

הערה: בניגוד לקווי מגמה ליניאריים, יש כמה דרכים שונות לחשב קווי מגמה מעריכיים. אנחנו מספקים כרגע רק שיטה אחת, אבל תתמוך בעתיד ביותר שיטות, ולכן יכול להיות שהשם או ההתנהגות של קו המעריכים הנוכחי ישתנו.

בתרשים הזה משתמשים גם ב-visibleInLegend: true כדי להציג את עקומת המעריך במקרא.

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

שינוי הצבע

כברירת מחדל, הקווים הססגוניים נצבעים באותו אופן כמו סדרת הנתונים, אבל הם בהירים יותר. אפשר לשנות זאת באמצעות המאפיין color. כאן אנחנו מדמים כמה ספרות של החישובים התבצעו בשנה לפי תקופת חישוב פורה, וצובעים את המעלות המעריכיות הירוקות.

מפרט המפרט של מגמות:

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

מגמות פולינומיות

כדי ליצור קו מגמה פולינומי, צריך לציין את polynomial ואת degree. הפעילו שיקול דעת מכיוון שהם עלולים להוביל לתוצאות מטעות. בדוגמה הבאה, כאשר מערך נתונים לינארי בעקביות משורטט באמצעות קו מגמה מעוקב (רמה 3):

צניחה חדה אחרי נקודת הנתונים האחרונה מופיעה רק מכיוון שהרחבנו באופן מלאכותי את הציר האופקי ל-15. בלי להגדיר את hAxis.maxValue כ-15, הקישור אמור להיראות כך:

נתונים זהים, פולינום זהה, חלון אחר של הנתונים.

אפשרויות
  var options = {
    title: 'Age vs. Weight comparison',
    legend: 'none',
    crosshair: { trigger: "both", orientation: "both" },
    trendlines: {
      0: {
        type: 'polynomial',
        degree: 3,
        visibleInLegend: true,
      }
    }
  };
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>

שינוי השקיפות והרוחב של הקו

תוכלו לשנות את השקיפות של קו המגמה על ידי הגדרת opacity לערך בין 0.0 ל-1.0, ולרוחב הקו על ידי הגדרת האפשרות lineWidth.

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

האפשרות lineWidth תהיה מתאימה לרוב השימושים, אבל אם אתם אוהבים את המראה של pointSize, יש אפשרות להשתמש בו כדי להתאים אישית את גודל הנקודות שניתן לבחור בהן מתוך קו המגמה:

בדיוק כמו שאור הוא גם גל וגם חלקיק, קו מגמה הוא גם קו וגם חבורה של נקודות. מה שהמשתמשים רואים תלוי באופן האינטראקציה שלהם איתם: בדרך כלל, קו, אבל כשמעבירים את העכבר מעל קו הזמן, נקודה מסוימת מודגשת. הקוטר שלה יהיה שווה ל:

  • קו המגמה pointSize אם הוגדר, אחרת...
  • pointSize הגלובלי, אם הוגדר...
  • 7

עם זאת, אם תגדירו את האפשרות הגלובלית או את מגמה pointSize, כל הנקודות שניתן לבחור יוצגו, ללא קשר לlineWidthשל קו מגמה.

אפשרויות
  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
      }
    }
  };
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>

הצגת הנקודות

כדי ליצור קווי מגמה, הם חותמים על כמות של נקודות בתרשים. האפשרות pointsVisible של קו המגמה קובעת אם הנקודות של קו מגמה מסוים יוצגו. אפשרות ברירת המחדל לכל קווי המגמה היא true, אבל אם רצית להשבית את אפשרות החשיפה של קו המגמה הראשון, עליך להגדיר את הערך trendlines.0.pointsVisible: false.

בתרשים שבהמשך אפשר לראות איך לשלוט בנקודות על כל מגמה.

אפשרויות
        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
            }
          }
        };
    
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>

    

שינוי התווית

אם תבחרו באפשרות visibleInLegend, התווית תציג את המשוואה של קו המגמה. אפשר להשתמש במאפיין labelInLegend כדי לציין תווית אחרת. כאן אנחנו מציגים קו מגמה לכל אחת מהסדרות, ומגדירים את התוויות במקרא ל"באג קו" (לסדרה 0) ול"קו בדיקה" (סדרה 1).

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

קשרים

המרכז לנחישות, שנקרא R2 בנתונים סטטיסטיים, מזהה עד כמה קו מגמה תואם לנתונים. קורלציה מושלמת היא 1.0, וההשוואה הנכונה היא 0.0.

תוכלו לתאר את ר' 2 במקרא של התרשים על ידי הגדרת האפשרות showR2 לtrue.

<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>