Übersicht
Eine
Google Charts unterstützt drei Arten von Trendlinien: linear, polynom und exponentiell.
Lineare Trendlinien
Eine
Im folgenden Diagramm sehen Sie auf einem Streudiagramm eine lineare Trendlinie, die das Alter von Zuckerahornsteinen mit dem Durchmesser ihrer Stämme vergleicht. Wenn Sie den Mauszeiger auf die Trendlinie bewegen, wird die von Google Charts berechnete Gleichung angezeigt: 4,885-facher Durchmesser + 0,730.
Wenn Sie in einem Diagramm eine Trendlinie zeichnen möchten, verwenden Sie die Option trendlines
und geben Sie an, welche Datenreihen verwendet werden sollen:
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); }
Lineare Trendlinien sind der häufigste Trendlinientyp. Manchmal ist eine Kurve jedoch am besten zur Beschreibung von Daten geeignet. Dafür ist eine andere Trendlinie erforderlich.
Exponentielle Trendlinien
Wenn sich Ihre Daten am besten anhand eines Exponentials in der Form eax+b erklären lassen, können Sie mit dem Attribut type
eine
Hinweis:Im Gegensatz zu linearen Trendlinien gibt es verschiedene Möglichkeiten, exponentielle Trendlinien zu berechnen. Derzeit gibt es nur eine Methode, aber in Zukunft werden weitere unterstützt. Daher ist es möglich, dass sich der Name oder das Verhalten der aktuellen exponentiellen Trendlinie ändert.
Für dieses Diagramm verwenden wir auch visibleInLegend: true
, um die Exponentialkurve in der Legende darzustellen.
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); }
Farbe ändern
Standardmäßig sind Trendlinien genauso eingefärbt wie die Datenreihen, aber heller. Sie können dies mit dem Attribut color
überschreiben.
Hier wird dargestellt, wie viele Ziffern von genau pro Jahr während eines rechenintensiven Zeitraums berechnet wurden. Die exponentielle Trendlinie wird grün dargestellt.
Hier ist die Spezifikation für Trendlinien:
trendlines: { 0: { type: 'exponential', color: 'green', } }
Polynom-Trendlinien
Geben Sie zum Generieren einer polynomen Trendlinie den Typ polynomial
und degree
an. Verwenden Sie diese Option mit Vorsicht, da sie manchmal zu irreführenden Ergebnissen führen können. Im folgenden Beispiel wird ein ungefähr linearer Datensatz mit einer kubischen Trendlinie (Grad 3) dargestellt:
Beachten Sie, dass das Absinken nach dem letzten Datenpunkt nur sichtbar ist, weil wir die horizontale Achse künstlich auf 15 verlängert haben. Ohne das Festlegen von hAxis.maxValue auf 15 würde das Ergebnis so aussehen:
Dieselben Daten, dasselbe Polynom, ein anderes Fenster in den Daten.
var options = { title: 'Age vs. Weight comparison', legend: 'none', crosshair: { trigger: "both", orientation: "both" }, trendlines: { 0: { type: 'polynomial', degree: 3, visibleInLegend: 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 = { 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>
Deckkraft und Linienbreite ändern
Sie können die Transparenz der Trendlinie ändern, indem Sie für opacity
einen Wert zwischen 0,0 und 1,0 festlegen. Für die Linienbreite legen Sie die Option lineWidth
fest.
trendlines: { 0: { color: 'purple', lineWidth: 10, opacity: 0.2, type: 'exponential' } }
Die Option lineWidth
ist für die meisten Anwendungsfälle ausreichend. Wenn Ihnen das Design gefällt, können Sie mit der Option pointSize
die Größe der auswählbaren Punkte innerhalb der Trendlinie anpassen:
So wie Licht sowohl eine Welle als auch ein Partikel ist, ist eine Trendlinie sowohl eine Linie als auch ein Bündel von Punkten. Was Nutzern angezeigt wird, hängt davon ab, wie sie damit interagieren: Normalerweise ist eine Linie eine Linie, aber wenn sie den Mauszeiger auf die Trendlinie bewegen, wird ein bestimmter Punkt hervorgehoben. Dieser Punkt hat einen Durchmesser von:
- Trendlinie
pointSize
, falls definiert, sonst... - Den globalen
pointSize
, falls definiert, sonst... - 7
Wenn Sie jedoch entweder die globale Option oder die Trendlinienoption pointSize
festlegen, werden alle auswählbaren Punkte angezeigt, unabhängig vom lineWidth
der Trendlinie.
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> <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>
Punkte sichtbar machen
Trendlinien werden dadurch dargestellt, dass mehrere Punkte in das Diagramm eingetragen werden. Mit der Option pointsVisible
der Trendlinie legen Sie fest, ob die Punkte einer bestimmten Trendlinie sichtbar sind. Die Standardoption für alle Trendlinien ist true
. Wenn Sie jedoch die Sichtbarkeit der Punkte für die erste Trendlinie deaktivieren möchten, legen Sie trendlines.0.pointsVisible: false
fest.
Im folgenden Diagramm sehen Sie, wie die Sichtbarkeit von Punkten für jede Trendlinie gesteuert wird.
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> <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>
Label ändern
Wenn Sie visibleInLegend
auswählen, zeigt das Label standardmäßig die Gleichung der Trendlinie an. Mit labelInLegend
können Sie ein anderes Label angeben. Hier zeigen wir eine Trendlinie für jede der beiden Reihen an und setzen die Labels in der Legende auf „Fehlerzeile“ (für Serie 0) und „Testzeile“ (Serie 1).
trendlines: { 0: { labelInLegend: 'Bug line', visibleInLegend: true, }, 1: { labelInLegend: 'Test line', visibleInLegend: true, } }
Korrelationen
Der Bestimmtheitskoeffizient, in der Statistik als R2 bezeichnet, gibt an, wie genau eine Trendlinie mit den Daten übereinstimmt. Eine perfekte Korrelation ist 1,0 und eine perfekte Antikorrelation ist 0,0.
Sie können R2 in der Legende Ihres Diagramms darstellen, indem Sie die Option showR2
auf true
setzen.
<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>