קווי מגמה

סקירה כללית

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

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

קווי מגמה לינאריים

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

בתרשים הבא אפשר לראות קו מגמה לינארי בתרשים פיזור שמשווה את הגיל של מיי הסוכר לקוטר של הגזעים שלהם. אפשר להעביר את העכבר מעל קו המגמה כדי לראות את המשוואה שמחושבת על ידי Google Charts: 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);
}

קווי מגמות לינאריים הם הסוג הנפוץ ביותר של קו מגמה. אבל לפעמים עקומה הכי מתאימה לתיאור נתונים, ולשם כך אנחנו זקוקים לסוג אחר של קו מגמה.

קווי מגמה מעריכיים

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

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

בתרשים הזה נשתמש גם ב-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 כדי לציין תווית אחרת. כאן אנחנו מציגים קו מגמה לכל אחת משתי הסדרות, ומגדירים את התוויות במקרא ל-"Bug line" (לסדרה 0) ול-"Test line" (סדרה 1).

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

מתאמים

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

כדי לתאר את R2 במקרא של התרשים, צריך להגדיר את האפשרות 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>