Übersicht
Ein Gantt-Diagramm ist eine Art von Diagramm, das die Aufschlüsselung eines Projekts in seine Komponentenaufgaben veranschaulicht. Google Gantt-Diagramme veranschaulichen den Beginn, das Ende und die Dauer von Aufgaben in einem Projekt sowie alle Abhängigkeiten, die eine Aufgabe haben kann. Google Gantt-Diagramme werden im Browser mit SVG gerendert. Wie bei allen Google-Diagrammen werden auch bei Gantt-Diagrammen Kurzinfos angezeigt, wenn der Nutzer den Mauszeiger auf die Daten bewegt.
Hinweis: Gantt-Diagramme funktionieren in alten Versionen von Internet Explorer nicht. (IE8 und frühere Versionen unterstützen kein SVG, das für Gantt Charts erforderlich ist.)
Ein einfaches Beispiel
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['gantt']}); google.charts.setOnLoadCallback(drawChart); function daysToMilliseconds(days) { return days * 24 * 60 * 60 * 1000; } function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Task ID'); data.addColumn('string', 'Task Name'); data.addColumn('date', 'Start Date'); data.addColumn('date', 'End Date'); data.addColumn('number', 'Duration'); data.addColumn('number', 'Percent Complete'); data.addColumn('string', 'Dependencies'); data.addRows([ ['Research', 'Find sources', new Date(2015, 0, 1), new Date(2015, 0, 5), null, 100, null], ['Write', 'Write paper', null, new Date(2015, 0, 9), daysToMilliseconds(3), 25, 'Research,Outline'], ['Cite', 'Create bibliography', null, new Date(2015, 0, 7), daysToMilliseconds(1), 20, 'Research'], ['Complete', 'Hand in paper', null, new Date(2015, 0, 10), daysToMilliseconds(1), 0, 'Cite,Write'], ['Outline', 'Outline paper', null, new Date(2015, 0, 6), daysToMilliseconds(1), 100, 'Research'] ]); var options = { height: 275 }; var chart = new google.visualization.Gantt(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Keine Abhängigkeiten
Wenn Sie ein Gantt-Diagramm ohne Abhängigkeiten erstellen möchten, muss der letzte Wert für jede Zeile in der Datentabelle auf null
gesetzt sein.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['gantt']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Task ID'); data.addColumn('string', 'Task Name'); data.addColumn('string', 'Resource'); data.addColumn('date', 'Start Date'); data.addColumn('date', 'End Date'); data.addColumn('number', 'Duration'); data.addColumn('number', 'Percent Complete'); data.addColumn('string', 'Dependencies'); data.addRows([ ['2014Spring', 'Spring 2014', 'spring', new Date(2014, 2, 22), new Date(2014, 5, 20), null, 100, null], ['2014Summer', 'Summer 2014', 'summer', new Date(2014, 5, 21), new Date(2014, 8, 20), null, 100, null], ['2014Autumn', 'Autumn 2014', 'autumn', new Date(2014, 8, 21), new Date(2014, 11, 20), null, 100, null], ['2014Winter', 'Winter 2014', 'winter', new Date(2014, 11, 21), new Date(2015, 2, 21), null, 100, null], ['2015Spring', 'Spring 2015', 'spring', new Date(2015, 2, 22), new Date(2015, 5, 20), null, 50, null], ['2015Summer', 'Summer 2015', 'summer', new Date(2015, 5, 21), new Date(2015, 8, 20), null, 0, null], ['2015Autumn', 'Autumn 2015', 'autumn', new Date(2015, 8, 21), new Date(2015, 11, 20), null, 0, null], ['2015Winter', 'Winter 2015', 'winter', new Date(2015, 11, 21), new Date(2016, 2, 21), null, 0, null], ['Football', 'Football Season', 'sports', new Date(2014, 8, 4), new Date(2015, 1, 1), null, 100, null], ['Baseball', 'Baseball Season', 'sports', new Date(2015, 2, 31), new Date(2015, 9, 20), null, 14, null], ['Basketball', 'Basketball Season', 'sports', new Date(2014, 9, 28), new Date(2015, 5, 20), null, 86, null], ['Hockey', 'Hockey Season', 'sports', new Date(2014, 9, 8), new Date(2015, 5, 21), null, 89, null] ]); var options = { height: 400, gantt: { trackHeight: 30 } }; var chart = new google.visualization.Gantt(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Ressourcen gruppieren
Aufgaben ähnlicher Art können mithilfe von Ressourcen gruppiert werden. Fügen Sie Ihren Daten eine Spalte vom Typ string
hinzu (nach den Spalten Task ID
und Task Name
) und achten Sie darauf, dass alle Aufgaben, die in einer Ressource gruppiert werden sollen, dieselbe Ressourcen-ID haben. Ressourcen werden nach Farbe gruppiert.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['gantt']}); google.charts.setOnLoadCallback(drawChart); function daysToMilliseconds(days) { return days * 24 * 60 * 60 * 1000; } function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Task ID'); data.addColumn('string', 'Task Name'); data.addColumn('string', 'Resource'); data.addColumn('date', 'Start Date'); data.addColumn('date', 'End Date'); data.addColumn('number', 'Duration'); data.addColumn('number', 'Percent Complete'); data.addColumn('string', 'Dependencies'); data.addRows([ ['Research', 'Find sources', null, new Date(2015, 0, 1), new Date(2015, 0, 5), null, 100, null], ['Write', 'Write paper', 'write', null, new Date(2015, 0, 9), daysToMilliseconds(3), 25, 'Research,Outline'], ['Cite', 'Create bibliography', 'write', null, new Date(2015, 0, 7), daysToMilliseconds(1), 20, 'Research'], ['Complete', 'Hand in paper', 'complete', null, new Date(2015, 0, 10), daysToMilliseconds(1), 0, 'Cite,Write'], ['Outline', 'Outline paper', 'write', null, new Date(2015, 0, 6), daysToMilliseconds(1), 100, 'Research'] ]); var options = { height: 275 }; var chart = new google.visualization.Gantt(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Start/Ende/Dauer berechnen
Gantt-Diagramme akzeptieren drei Werte in Bezug auf die Dauer der Aufgabe: ein Startdatum, ein Enddatum und eine Dauer (in Millisekunden). Wenn es beispielsweise kein Startdatum gibt, kann die fehlende Zeit im Diagramm anhand des Enddatums und der Dauer berechnet werden. Dasselbe gilt für die Berechnung des Enddatums. Wenn sowohl das Start- als auch das Enddatum angegeben sind, kann die Dauer zwischen diesen beiden Werten berechnet werden.
Die folgende Tabelle enthält eine Liste dazu, wie Gantt das Vorhandensein von Start, Ende und Dauer unter verschiedenen Umständen verarbeitet.
Starten | Beenden | Dauer | Folge |
---|---|---|---|
Präsentieren | Präsentieren | Präsentieren | Die Dauer muss mit den Start- und Endzeiten übereinstimmen. Gibt bei Inkonsistenz einen Fehler aus. |
Präsentieren | Präsentieren | Null | Berechnet die Dauer ab Start- und Endzeit. |
Präsentieren | Null | Präsentieren | Berechnet die Endzeit. |
Präsentieren | Null | Null | Gibt den Fehler aus, weil die Dauer oder das Ende nicht berechnet werden können. |
Null | Präsentieren | Präsentieren | Berechnet die Startzeit. |
Null | Null | Präsentieren |
Berechnet die Startzeit basierend auf Abhängigkeiten. In Verbindung mit defaultStartDate ermöglicht dies, dass Diagramme nur mit Zeiträumen gezeichnet werden können.
|
Null | Präsentieren | Null | Gibt den Fehler aus, da die Startzeit oder Dauer nicht berechnet werden kann. |
Null | Null | Null | Gibt den Fehler aus, weil der Beginn, das Ende oder die Dauer nicht berechnet werden können. |
Unter Berücksichtigung der oben genannten Punkte können Sie ein Diagramm erstellen, das den typischen Arbeitsweg zur Arbeit darstellt und nur die Dauer der einzelnen Aufgaben verwendet.
<html> <head> <script src="https://www.gstatic.com/charts/loader.js"></script> <script> google.charts.load("current", { packages: ["gantt"] }); google.charts.setOnLoadCallback(drawChart); function toMilliseconds(minutes) { return minutes * 60 * 1000; } function drawChart() { var otherData = new google.visualization.DataTable(); otherData.addColumn("string", "Task ID"); otherData.addColumn("string", "Task Name"); otherData.addColumn("string", "Resource"); otherData.addColumn("date", "Start"); otherData.addColumn("date", "End"); otherData.addColumn("number", "Duration"); otherData.addColumn("number", "Percent Complete"); otherData.addColumn("string", "Dependencies"); otherData.addRows([ [ "toTrain", "Walk to train stop", "walk", null, null, toMilliseconds(5), 100, null, ], [ "music", "Listen to music", "music", null, null, toMilliseconds(70), 100, null, ], [ "wait", "Wait for train", "wait", null, null, toMilliseconds(10), 100, "toTrain", ], [ "train", "Train ride", "train", null, null, toMilliseconds(45), 75, "wait", ], [ "toWork", "Walk to work", "walk", null, null, toMilliseconds(10), 0, "train", ], [ "work", "Sit down at desk", null, null, null, toMilliseconds(2), 0, "toWork", ], ]); var options = { height: 275, gantt: { defaultStartDate: new Date(2015, 3, 28), }, }; var chart = new google.visualization.Gantt( document.getElementById("chart_div") ); chart.draw(otherData, options); } </script> </head> <body> <div id="chart_div"></div> </body> </html>
Kritischer Pfad
Der kritische Pfad in einem Gantt-Diagramm ist der oder die Pfade, die sich direkt auf das Enddatum auswirken. Der kritische Pfad in Google Gantt-Diagrammen ist standardmäßig rot eingefärbt und kann mit den Optionen criticalPathStyle
angepasst werden. Sie können den kritischen Pfad auch deaktivieren, indem Sie criticalPathEnabled
auf false
setzen.
var options = { height: 275, gantt: { criticalPathEnabled: true, criticalPathStyle: { stroke: '#e64a19', strokeWidth: 5 } } };
Pfeile gestalten
Mit den Optionen für gantt.arrow
können Sie die Abhängigkeitspfeile zwischen Aufgaben gestalten:
var options = { height: 275, gantt: { criticalPathEnabled: false, // Critical path arrows will be the same as other arrows. arrow: { angle: 100, width: 5, color: 'green', radius: 0 } } };
Stile für Titel festlegen
Für die Gestaltung des Rasters wird eine Kombination aus innerGridHorizLine
, innerGridTrack
und innerGridDarkTrack
verwendet. Wenn Sie nur innerGridTrack
festlegen, wird im Diagramm für innerGridDarkTrack
eine dunklere Farbe berechnet. Wenn Sie jedoch nur innerGridDarkTrack
festlegen, verwendet innerGridTrack
die Standardfarbe und berechnet keine hellere Farbe.
var options = { height: 275, gantt: { criticalPathEnabled: false, innerGridHorizLine: { stroke: '#ffe0b2', strokeWidth: 2 }, innerGridTrack: {fill: '#fff3e0'}, innerGridDarkTrack: {fill: '#ffcc80'} } };
Wird geladen
Der Paketname „google.charts.load
“ lautet "gantt"
.
google.charts.load("current", {packages: ["gantt"]});
Der Klassenname der Visualisierung lautet google.visualization.Gantt
.
var chart = new google.visualization.Gantt(container);
Datenformat
Zeilen:Jede Zeile in der Tabelle steht für eine Aufgabe.
Columns:
Spalte 0 | Spalte 1 | Spalte 2 | Spalte 3 | Spalte 4 | Spalte 5 | Spalte 6 | Spalte 7 | |
---|---|---|---|---|---|---|---|---|
Zweck: | Aufgaben-ID | Aufgabenname | Ressourcen-ID (optional) | Starten | Beenden | Dauer (in Millisekunden) | Prozent gelesen | Abhängigkeiten |
Datentyp: | String | String | String | date | date | number | number | String |
Rolle: | Domain | Daten | Daten | Daten | Daten | Daten | Daten | Daten |
Konfigurationsoptionen
Name | Typ | Standard | Beschreibung |
---|---|---|---|
backgroundColor.fill | String | 'white' | Die Füllfarbe des Diagramms als HTML-Farbstring. |
gantt.arrow | Objekt | null |
Bei Gantt-Diagrammen steuert gantt.arrow die verschiedenen Eigenschaften der Pfeile, die Aufgaben verbinden.
|
gantt.arrow.angle | number | 45 | Der Winkel des Pfeilkopfes. |
gantt.arrow.color | String | „#000“ | Die Farbe der Pfeile. |
gantt.arrow.length | number | 8 | Die Länge der Pfeilspitze. |
gantt.arrow.radius | number | 15 | Der Radius zum Definieren der Kurve des Pfeils zwischen zwei Aufgaben. |
gantt.arrow.spaceAfter | number | 4 | Der Leerraum zwischen der Spitze eines Pfeils und der Aufgabe, auf die er zeigt. |
gantt.arrow.width | number | 1,4 | Die Breite der Pfeile. |
gantt.barCornerRadius | number | 2 | Der Radius, mit dem die Kurve der Ecken eines Balkens definiert wird. |
gantt.barHeight | number | null | Die Höhe der Balken für Aufgaben. |
gantt.criticalPathEnabled | boolean | true |
Wenn true , werden Pfeile im kritischen Pfad anders formatiert.
|
gantt.criticalPathStyle | Objekt | null | Ein Objekt, das den Stil für alle Pfeile bei kritischen Pfaden enthält. |
gantt.criticalPathStyle.stroke | String | null | Die Farbe der Pfeile für kritische Pfade. |
gantt.criticalPathStyle.strokeWidth | number | 1,4 | Die Stärke der Pfeile bei kritischen Pfaden. |
gantt.defaultStartDate | Datum/Zahl | null |
Wenn das Startdatum nicht aus den Werten in der DataTable berechnet werden kann, wird das Startdatum auf dieses Datum festgelegt. Akzeptiert einen date -Wert (new Date(YYYY, M, D) ) oder eine Zahl, die die Anzahl der zu verwendenden Millisekunden angibt.
|
gantt.innerGridHorizLine | Objekt | null | Definiert den Stil der inneren horizontalen Rasterlinien. |
gantt.innerGridHorizLine.stroke | String | null | Die Farbe der inneren horizontalen Rasterlinien. |
gantt.innerGridHorizLine.strokeWidth | number | 1 | Breite der inneren horizontalen Rasterlinien. |
gantt.innerGridTrack.fill | String | null |
Die Füllfarbe des inneren Rasterspurs. Wenn kein innerGridDarkTrack.fill angegeben ist, wird dies auf jede Rasterspur angewendet.
|
gantt.innerGridDarkTrack.fill | String | null | Die Füllfarbe des alternativen, dunklen inneren Rasterspurs. |
gantt.labelMaxWidth | number | 300 | Der maximal zulässige Platz für jedes Aufgabenlabel. |
gantt.labelStyle | Objekt | null |
Ein Objekt, das die Stile für Aufgabenlabels enthält. labelStyle: { fontName: Roboto2, fontSize: 14, color: '#757575' }, |
gantt.percentEnabled | boolean | true | Füllt die Taskleiste basierend auf dem Prozentsatz der erledigten Aufgaben aus. |
gantt.percentStyle.fill | String | null | Die Farbe des Teils der Fertigstellung in Prozent einer Taskleiste. |
gantt.shadowEnabled | boolean | true |
Wenn true festgelegt ist, wird ein Schatten unter jede Taskleiste mit Abhängigkeiten gezeichnet.
|
gantt.shadowColor | String | „#000“ | Definiert die Farbe der Schatten unter jeder Taskleiste, die Abhängigkeiten hat. |
gantt.shadowOffset | number | 1 | Definiert den Abstand der Schatten unter einer beliebigen Taskleiste mit Abhängigkeiten in Pixeln. |
gantt.sortTasks | boolean | true | Gibt an, dass die Aufgaben topologisch sortiert werden sollen, wenn dies auf „true“ gesetzt ist. Verwenden Sie andernfalls dieselbe Reihenfolge wie die entsprechenden Zeilen der DataTable. |
gantt.trackHeight | number | null | Die Höhe der Tracks. |
width | number | Breite des beinhaltenden Elements | Breite des Diagramms in Pixeln. |
height | number | Höhe des beinhaltenden Elements | Höhe des Diagramms in Pixeln. |
Methoden
Method | Beschreibung |
---|---|
draw(data, options) |
Zeichnet das Diagramm. Das Diagramm akzeptiert erst dann weitere Methodenaufrufe, nachdem das Ereignis Return Type: Kein
|
getSelection() |
Gibt ein Array der ausgewählten Diagrammentitäten zurück.
Auswählbare Elemente sind Balken, Legendeneinträge und Kategorien.
Für dieses Diagramm kann jeweils nur eine Entität ausgewählt werden.
Rückgabetyp:Array von Auswahlelementen
|
setSelection() |
Wählt die angegebenen Diagrammentitäten aus. Verwirft die vorherige Auswahl.
Auswählbare Elemente sind Balken, Legendeneinträge und Kategorien.
Für dieses Diagramm kann jeweils nur eine Entität ausgewählt werden.
Return Type: Kein
|
clearChart() |
Löscht das Diagramm und gibt alle zugewiesenen Ressourcen frei. Return Type: Kein
|
Ereignisse
Veranstaltung | Beschreibung |
---|---|
click |
Wird ausgelöst, wenn der Nutzer auf das Diagramm klickt Damit können Sie feststellen, wann auf Titel, Datenelemente, Legendeneinträge, Achsen, Gitternetzlinien oder Labels geklickt wird. Eigenschaften: targetID
|
error |
Wird ausgelöst, wenn beim Versuch, das Diagramm zu rendern, ein Fehler auftritt. Properties (Eigenschaften): id, message, message
|
ready |
Das Diagramm ist bereit für externe Methodenaufrufe. Wenn Sie mit dem Diagramm interagieren und Methoden aufrufen möchten, nachdem Sie es gezeichnet haben, sollten Sie einen Listener für dieses Ereignis einrichten, bevor Sie die Methode Properties:keine
|
select |
Wird ausgelöst, wenn der Nutzer auf eine visuelle Entität klickt. Wenn Sie wissen möchten, was ausgewählt wurde, rufen Sie Properties:keine
|
Datenrichtlinie
Sämtlicher Code und alle Daten werden im Browser verarbeitet und gerendert. Es werden keine Daten an einen Server gesendet.