Osie czasu

Omówienie

Oś czasu to wykres przedstawiający wykorzystanie zasobów na przestrzeni czasu. Gdy zarządzasz projektem oprogramowania i chcesz pokazać, kto i co zajmuje się danym problemem lub organizujesz konferencję i chcesz zaplanować salę konferencyjną, często przydają się wizualizacje. Typowym rodzajem osi czasu jest wykres Gantta.

Uwaga: w obiektach Data JavaScript miesiące są indeksowane od zera i rosną o jedenaście, gdzie 0 stycznia to 0, a 11 grudnia. Jeśli oś czasu wygląda na miesiąc, najprawdopodobniej tak się dzieje. Więcej informacji znajdziesz na stronie Daty i godziny.

Prosty przykład

Załóżmy, że chcesz wykreślić terminy prezydentów Stanów Zjednoczonych. Przewodniczący są „zasobami” – możemy nakreślić każdy z nich jako bar:

Najechanie kursorem na słupek powoduje wyświetlenie etykietki z bardziej szczegółowymi informacjami.

Po wczytaniu pakietu timeline i zdefiniowaniu wywołania zwrotnego w celu narysowania wykresu podczas renderowania strony metoda drawChart() tworzy instancję google.visualization.Timeline(), a następnie wypełnia po dataTable wierszem dla każdego prezydenta.

W kolumnie dataTable pierwsza kolumna zawiera imię prezydenta, a druga i trzecia kolumna są godzinami rozpoczęcia i zakończenia. Typ kodu JavaScript to Date, ale mogą to być tylko liczby proste.

Na koniec wywołujemy metodę draw() wykresu, która wyświetla ją w elemencie div o tym samym identyfikatorze (timeline), który został użyty, gdy zadeklarowano container w pierwszym wierszu drawChart().

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['timeline']});
      google.charts.setOnLoadCallback(drawChart);
      function drawChart() {
        var container = document.getElementById('timeline');
        var chart = new google.visualization.Timeline(container);
        var dataTable = new google.visualization.DataTable();

        dataTable.addColumn({ type: 'string', id: 'President' });
        dataTable.addColumn({ type: 'date', id: 'Start' });
        dataTable.addColumn({ type: 'date', id: 'End' });
        dataTable.addRows([
          [ 'Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
          [ 'Adams',      new Date(1797, 2, 4),  new Date(1801, 2, 4) ],
          [ 'Jefferson',  new Date(1801, 2, 4),  new Date(1809, 2, 4) ]]);

        chart.draw(dataTable);
      }
    </script>
  </head>
  <body>
    <div id="timeline" style="height: 180px;"></div>
  </body>
</html>

Oś czasu w Wykresach Google można dostosowywać, a w poniższych przykładach pokazujemy, jak dostosowywać wygląd osi czasu.

Oznaczanie słupków

Oprócz etykiet wierszy („Washington”, „Adams”, „Jefferson” powyżej) możesz też oznaczać poszczególne słupki. Tutaj zmieniamy etykiety wierszy na proste liczby i umieszczamy nazwisko każdego prezydenta na pasku.

W tym kodzie wstawiliśmy nową kolumnę do danych, dzięki której można przechowywać etykiety słupkowe: pełne imię i nazwisko każdego prezydenta. Gdy na osi czasu znajdują się 4 kolumnydataTable, pierwsza jest interpretowana jako etykieta wiersza, druga jako etykieta słupkowa, a trzecia jako 4 jako początkowa i końcowa.

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example2.1');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();

    dataTable.addColumn({ type: 'string', id: 'Term' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });

    dataTable.addRows([
      [ '1', 'George Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
      [ '2', 'John Adams',        new Date(1797, 2, 4),  new Date(1801, 2, 4) ],
      [ '3', 'Thomas Jefferson',  new Date(1801, 2, 4),  new Date(1809, 2, 4) ]]);

    chart.draw(dataTable);
  }
</script>

<div id="example2.1" style="height: 200px;"></div>

Nowe etykiety wierszy powyżej nie są przydatne, więc usuń je z osią czasu showRowLabels.

Domyślnie showRowLabels to true. Ustawienie false powoduje usunięcie etykiet wierszy:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example2.2');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Term' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ '1', 'George Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
      [ '2', 'John Adams',        new Date(1797, 2, 4),  new Date(1801, 2, 4) ],
      [ '3', 'Thomas Jefferson',  new Date(1801, 2, 4),  new Date(1809, 2, 4) ]]);

    var options = {
      timeline: { showRowLabels: false }
    };

    chart.draw(dataTable, options);
  }
</script>

<div id="example2.2" style="height: 180px;"></div>

Przykład zaawansowany

Aby ułożyć oś czasu w bardziej skomplikowany sposób, dodamy do wykresu wiceprezydentów i tajnych sekretarzy stanu. John Adams był wiceprezesem, zanim został prezydentem. Thomas Jefferson był sekretarzem stanu, potem wiceprezesem i prezydentem.

Na osi czasu zasób ma ten sam kolor nawet wtedy, gdy jest widoczny w wielu wierszach, więc na wykresie poniżej każda osoba jest przedstawiona w jednym kolorze.

Niektóre obiekty tajne stanu są używane bardzo krótko, więc ten wykres jest dobrym testem oznaczania etykietami. Gdy etykieta jest za duża dla paska, zostanie ona skrócona lub usunięta (zależnie od rozmiaru paska). Użytkownicy mogą najechać kursorem na pasek, aby uzyskać informacje o etykietkach.

Na osi czasu będą widoczne wiersze w odpowiedniej kolejności – będzie to nad prezydentem sekretarza stanu, a w podanej kolejności. Układ drążków jest jednak określany wyłącznie na podstawie czasu rozpoczęcia i zakończenia, dlatego zamiana 2 tajnych sekretarów stanu lub 2 prezydentów dataTable nie ma wpływu na wykres.

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {

    var container = document.getElementById('example3.1');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Position' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'President', 'George Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
      [ 'President', 'John Adams', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
      [ 'President', 'Thomas Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ],
      [ 'Vice President', 'John Adams', new Date(1789, 3, 21), new Date(1797, 2, 4)],
      [ 'Vice President', 'Thomas Jefferson', new Date(1797, 2, 4), new Date(1801, 2, 4)],
      [ 'Vice President', 'Aaron Burr', new Date(1801, 2, 4), new Date(1805, 2, 4)],
      [ 'Vice President', 'George Clinton', new Date(1805, 2, 4), new Date(1812, 3, 20)],
      [ 'Secretary of State', 'John Jay', new Date(1789, 8, 25), new Date(1790, 2, 22)],
      [ 'Secretary of State', 'Thomas Jefferson', new Date(1790, 2, 22), new Date(1793, 11, 31)],
      [ 'Secretary of State', 'Edmund Randolph', new Date(1794, 0, 2), new Date(1795, 7, 20)],
      [ 'Secretary of State', 'Timothy Pickering', new Date(1795, 7, 20), new Date(1800, 4, 12)],
      [ 'Secretary of State', 'Charles Lee', new Date(1800, 4, 13), new Date(1800, 5, 5)],
      [ 'Secretary of State', 'John Marshall', new Date(1800, 5, 13), new Date(1801, 2, 4)],
      [ 'Secretary of State', 'Levi Lincoln', new Date(1801, 2, 5), new Date(1801, 4, 1)],
      [ 'Secretary of State', 'James Madison', new Date(1801, 4, 2), new Date(1809, 2, 3)]
    ]);

    chart.draw(dataTable);
  }
</script>

<div id="example3.1" style="height: 200px;"></div>

Umieszczanie słupków w jednym wierszu

W przeciwieństwie do papieży może być tylko jeden prezydent Stanów Zjednoczonych. Jeśli więc oznaczymy wszystkie wiersze jako „prezydenta”, oś czasu pozwoli połączyć 3 wiersze pierwszego wykresu w 1 wiersz, co zapewni bardziej czytelną prezentację. Możesz zarządzać tym działaniem za pomocą opcji groupByRowLabel.

Oto domyślne działanie:

Ustawmy teraz groupByRowLabel na false i podzielmy jeden wiersz na trzy:

Aby wyłączyć grupowanie:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example4.2');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();

    dataTable.addColumn({ type: 'string', id: 'Role' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'President', 'George Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
      [ 'President', 'John Adams', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
      [ 'President', 'Thomas Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]);

    var options = {
      timeline: { groupByRowLabel: false }
    };

    chart.draw(dataTable, options);
  }
</script>

<div id="example4.2" style="height: 200px;"></div>

Kontrola nad kolorami

Domyślnie Wykresy Google wybierają kolory zoptymalizowane pod kątem estetyki i czytelności (w tym wśród użytkowników z wadami wzroku). Domyślne działanie możesz dostosować za pomocą opcji colorByRowLabel, singleColor, backgroundColor i colors.

Opcja colorByRowLabel oznacza tak samo wszystkie paski w tym samym wierszu. Może to być dobry wybór w przypadku odstępów między słupkami.

colorByRowLabel domyślnie ma wartość false, więc zastępujemy ją ustawieniem true.

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {

    var container = document.getElementById('example5.1');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Room' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'Magnolia Room', 'Beginning JavaScript',       new Date(0,0,0,12,0,0),  new Date(0,0,0,13,30,0) ],
      [ 'Magnolia Room', 'Intermediate JavaScript',    new Date(0,0,0,14,0,0),  new Date(0,0,0,15,30,0) ],
      [ 'Magnolia Room', 'Advanced JavaScript',        new Date(0,0,0,16,0,0),  new Date(0,0,0,17,30,0) ],
      [ 'Willow Room',   'Beginning Google Charts',    new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Willow Room',   'Intermediate Google Charts', new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Willow Room',   'Advanced Google Charts',     new Date(0,0,0,16,30,0), new Date(0,0,0,18,0,0) ]]);

    var options = {
      timeline: { colorByRowLabel: true }
    };

    chart.draw(dataTable, options);
  }

</script>

<div id="example5.1" style="height: 100px;"></div>

Jeśli chcesz, aby wszystkie paski miały ten sam kolor niezależnie od tego, w którym wierszu się znajdują, użyj opcji singleColor:

W poniższym kodzie singleColor ustawia wartość szesnastkową koloru wszystkich pasków jasnojasnych:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {

    var container = document.getElementById('example5.2');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();

    dataTable.addColumn({ type: 'string', id: 'Room' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'Magnolia Room',  'CSS Fundamentals',    new Date(0,0,0,12,0,0),  new Date(0,0,0,14,0,0) ],
      [ 'Magnolia Room',  'Intro JavaScript',    new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Magnolia Room',  'Advanced JavaScript', new Date(0,0,0,16,30,0), new Date(0,0,0,19,0,0) ],
      [ 'Gladiolus Room', 'Intermediate Perl',   new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Gladiolus Room', 'Advanced Perl',       new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Gladiolus Room', 'Applied Perl',        new Date(0,0,0,16,30,0), new Date(0,0,0,18,0,0) ],
      [ 'Petunia Room',   'Google Charts',       new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Petunia Room',   'Closure',             new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Petunia Room',   'App Engine',          new Date(0,0,0,16,30,0), new Date(0,0,0,18,30,0) ]]);

    var options = {
      timeline: { singleColor: '#8d8' },
    };

    chart.draw(dataTable, options);
  }
</script>

<div id="example5.2" style="height: 150px;"></div>

Kolor tła wierszy możesz określić za pomocą opcji backgroundColor:

backgroundColor jest określony jako wartość szesnastkowa. Łączymy go z colorByRowLabel, aby wyświetlać ścieżki konferencyjne:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example5.3');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Room' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'Magnolia Room',  'CSS Fundamentals',    new Date(0,0,0,12,0,0),  new Date(0,0,0,14,0,0) ],
      [ 'Magnolia Room',  'Intro JavaScript',    new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Magnolia Room',  'Advanced JavaScript', new Date(0,0,0,16,30,0), new Date(0,0,0,19,0,0) ],
      [ 'Gladiolus Room', 'Intermediate Perl',   new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Gladiolus Room', 'Advanced Perl',       new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Gladiolus Room', 'Applied Perl',        new Date(0,0,0,16,30,0), new Date(0,0,0,18,0,0) ],
      [ 'Petunia Room',   'Google Charts',       new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Petunia Room',   'Closure',             new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Petunia Room',   'App Engine',          new Date(0,0,0,16,30,0), new Date(0,0,0,18,30,0) ]]);

    var options = {
      timeline: { colorByRowLabel: true },
      backgroundColor: '#ffd'
    };

    chart.draw(dataTable, options);
  }
</script>

<div id="example5.3" style="height: 150px;"></div>

Następnie, aby ustawić kolor tła naprzemiennie lub bez zmian na podstawie indeksu wiersza, użyj opcji alternatingRowStyle (aktywnej wersji 51+):

<script src="https://www.gstatic.com/charts/loader.js"></script>

<script>
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example5.4');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Room' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'Magnolia Room',  'CSS Fundamentals',    new Date(0,0,0,12,0,0),  new Date(0,0,0,14,0,0) ],
      [ 'Magnolia Room',  'Intro JavaScript',    new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Magnolia Room',  'Advanced JavaScript', new Date(0,0,0,16,30,0), new Date(0,0,0,19,0,0) ],
      [ 'Gladiolus Room', 'Intermediate Perl',   new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Gladiolus Room', 'Advanced Perl',       new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Gladiolus Room', 'Applied Perl',        new Date(0,0,0,16,30,0), new Date(0,0,0,18,0,0) ],
      [ 'Petunia Room',   'Google Charts',       new Date(0,0,0,12,30,0), new Date(0,0,0,14,0,0) ],
      [ 'Petunia Room',   'Closure',             new Date(0,0,0,14,30,0), new Date(0,0,0,16,0,0) ],
      [ 'Petunia Room',   'App Engine',          new Date(0,0,0,16,30,0), new Date(0,0,0,18,30,0) ]]);

    var options = {
      timeline: { colorByRowLabel: true },
      alternatingRowStyle: false
    };

    chart.draw(dataTable, options);
  }
</script>

<div id="example5.4" style="height: 150px;"></div>

Jeśli chcesz kontrolować kolory poszczególnych pasków, użyj opcji colors:

colors pobiera tablicę wartości szesnastkowych, które są stosowane do słupków w następującej kolejności:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example5.5');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Role' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'President', 'George Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
      [ 'President', 'John Adams', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
      [ 'President', 'Thomas Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]);

    var options = {
      colors: ['#cbb69d', '#603913', '#c69c6e'],
    };

    chart.draw(dataTable, options);
  }

</script>

<div id="example5.5" style="height: 150px;"></div>

Jeśli na wykresie potrzeba więcej kolorów niż na liście, wykres będzie wyglądał tak, jakby singleColor miał ustawiony pierwszy kolor na liście. (Dotyczy to wszystkich wykresów Google, nie tylko osi czasu).

Innym sposobem kontrolowania kolorów poszczególnych pasków jest użycie kolumny z rolą stylu.

Kod do dodania i uzupełnienia kolumny stylu:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example5.6');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Role' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'string', id: 'style', role: 'style' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'President', 'George Washington', '#cbb69d', new Date(1789, 3, 30), new Date(1797, 2, 4)],
      [ 'President', 'John Adams', '#603913', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
      [ 'President', 'Thomas Jefferson', '#c69c6e', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]);

    chart.draw(dataTable);
  }

</script>

<div id="example5.6" style="height: 150px;"></div>

Zmienianie czcionek

Możesz wybrać krój czcionki i czcionkę etykiet każdego wiersza w rowLabelStyle oraz etykiety na każdym pasku z barLabelStyle. Oba te elementy zostały przedstawione poniżej.

Uwaga: wybierz krój czcionki, który będzie można renderować w przeglądarkach użytkowników.

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

<script type="text/javascript">
  google.charts.load("current", {packages:["timeline"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var container = document.getElementById('example6.1');
    var chart = new google.visualization.Timeline(container);
    var dataTable = new google.visualization.DataTable();
    dataTable.addColumn({ type: 'string', id: 'Role' });
    dataTable.addColumn({ type: 'string', id: 'Name' });
    dataTable.addColumn({ type: 'date', id: 'Start' });
    dataTable.addColumn({ type: 'date', id: 'End' });
    dataTable.addRows([
      [ 'Washington', 'George Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ],
      [ 'Adams', 'John Adams', new Date(1797, 2, 4), new Date(1801, 2, 4) ],
      [ 'Jefferson', 'Thomas Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]);

    var options = {
      colors: ['#cbb69d', '#603913', '#c69c6e'],
      timeline: { rowLabelStyle: {fontName: 'Helvetica', fontSize: 24, color: '#603913' },
                     barLabelStyle: { fontName: 'Garamond', fontSize: 14 } }
    };

    chart.draw(dataTable, options);
  }
</script>

<div id="example6.1" style="height: 200px;"></div>

Nie możesz ustawić koloru tekstu barLabel.

Nakładające się linie siatki

W Wykresach Google wprowadzono drobne zmiany w punktach końcowych słupka, aby uniknąć przesłaniania linii siatki na osi czasu. Aby temu zapobiec, ustaw opcję avoidOverlappingGridLines na false.

Aby zilustrować efekt, skorzystaj z 2 przykładów: pierwszego z nałożonymi siatką, a drugiego nie.

Oto kod, który nakłada się na linie siatki:

  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

  <script type="text/javascript">
    google.charts.load("current", {packages:["timeline"]});
    google.charts.setOnLoadCallback(drawChart);
    function drawChart() {
      var container = document.getElementById('example7.1');
      var chart = new google.visualization.Timeline(container);
      var dataTable = new google.visualization.DataTable();
      dataTable.addColumn({ type: 'string', id: 'Room' });
      dataTable.addColumn({ type: 'string', id: 'Name' });
      dataTable.addColumn({ type: 'date', id: 'Start' });
      dataTable.addColumn({ type: 'date', id: 'End' });
      dataTable.addRows([
        [ 'Magnolia Room', 'Google Charts', new Date(0,0,0,14,0,0), new Date(0,0,0,15,0,0)],
        [ 'Magnolia Room', 'App Engine',    new Date(0,0,0,15,0,0), new Date(0,0,0,16,0,0)]]);

      var options = {
        timeline: { showRowLabels: false },
        avoidOverlappingGridLines: false
      };

      chart.draw(dataTable, options);
    }

  </script>

  <div id="example7.1" style="height: 200px;"></div>

Dostosowywanie etykietek

Aby dostosować informacje wyświetlane użytkownikom po najechaniu kursorem myszy na słupki osi czasu, dodaj kolumnę z etykietką do 5-kolumnowej tabeli danych. Aby można było podać etykietki inne niż domyślne, każdy wiersz tabeli danych musi zawierać wszystkie 5 kolumn (etykieta wiersza, etykieta słupkowa, etykietka, początek i koniec):

Najechanie kursorem na słupek powoduje wyświetlenie etykietki z tekstem określonym w trzeciej kolumnie. Na tej karcie musimy umieścić w drugiej kolumnie fikcyjne wartości (tutaj null), aby nasze etykietki mogły znaleźć się w trzeciej kolumnie.

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['timeline']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var container = document.getElementById('timeline-tooltip');
        var chart = new google.visualization.Timeline(container);
        var dataTable = new google.visualization.DataTable();

        dataTable.addColumn({ type: 'string', id: 'President' });
        dataTable.addColumn({ type: 'string', id: 'dummy bar label' });
        dataTable.addColumn({ type: 'string', role: 'tooltip' });
        dataTable.addColumn({ type: 'date', id: 'Start' });
        dataTable.addColumn({ type: 'date', id: 'End' });
        dataTable.addRows([
          [ 'Washington', null, 'George', new Date(1789, 3, 29), new Date(1797, 2, 3) ],
          [ 'Adams', null, 'John', new Date(1797, 2, 3),  new Date(1801, 2, 3) ],
          [ 'Jefferson', null, 'Thomas', new Date(1801, 2, 3),  new Date(1809, 2, 3) ]]);

        chart.draw(dataTable);
      }
    </script>
  </head>
  <body>
    <div id="timeline-tooltip" style="height: 180px;"></div>
  </body>
</html>

Wczytuję

Nazwa pakietu google.charts.load to timeline:

  google.charts.load("current", {packages: ["timeline"]});

Nazwa klasy wizualizacji to google.visualization.Timeline:

  var visualization = new google.visualization.Timeline(container);

Format danych

Wiersze: każdy wiersz w tabeli odpowiada słupkowi na osi czasu.

Kolumny:

  Kolumna 0 Kolumna 1 Kolumna 2 Kolumna 3 Kolumna 4
Cel: Etykieta wiersza Etykieta paska (opcjonalnie) Etykietka (opcjonalnie) Uruchom Koniec
Typ danych: tekst tekst tekst liczba lub data liczba lub data
Rola: dane dane etykietka dane dane

 

Opcje konfiguracji

Nazwa
zmienne wiersze

Określa, czy wykres ma zmieniać kolor tła w pozycji w wierszu (np. kolor tła w przypadku zindeksowanych wierszy jest ciemniejszy). Jeśli ma wartość Fałsz, tło wykresu jest jednolite. Jeśli ma wartość true (prawda), tło wykresu będzie zmieniać odcień według indeksu wiersza. (Uwaga: aktywna wersja 51+)

Typ: wartość logiczna
Wartość domyślna: true
Unikaj nakładania się linii siatki

Określa, czy elementy displayowe (np. słupki na osi czasu) powinny zasłaniać linie siatki. Jeśli ma wartość Fałsz, linie siatki mogą być całkowicie zasłonięte przez elementy do wyświetlania. Jeśli ma wartość true (prawda), elementy displayowe można zmieniać, aby linie siatki były widoczne.

Typ: wartość logiczna
Wartość domyślna: true
backgroundColor,

Kolor tła głównego obszaru wykresu. Może to być prosty ciąg kolorów HTML, taki jak 'red' lub '#00cc00', lub obiekt z tymi właściwościami.

Typ: ciąg znaków lub obiekt
Domyślny: „biały”.
kolory

Kolory elementów wykresu. Tablica ciągów znaków, w których każdy jest ciągiem koloru HTML, np. colors:['red','#004411'].

Typ: Tablica ciągów znaków
Domyślny: kolory domyślne.
włącz interfejs interaktywny

Określa, czy wykres generuje zdarzenia oparte na użytkownikach lub reaguje na ich interakcje. Jeśli ma wartość false (fałsz), wykres nie zwróci zdarzenia wyboru ani innych zdarzeń związanych z interakcją (ale będzie zwracać zdarzenia lub błędy) ani nie będzie zawierać tekstu wyświetlanego po najechaniu kursorem ani innego działania w zależności od danych wejściowych użytkownika.

Typ: wartość logiczna
Wartość domyślna: true
Czcionka

Domyślny krój czcionki całego tekstu na wykresie. Możesz zastąpić tę opcję, używając właściwości określonych elementów wykresu.

Typ: ciąg znaków
Domyślny: „solarmora”
rozmiar czcionki

Domyślny rozmiar czcionki całego tekstu na wykresie (w pikselach). Możesz zastąpić tę opcję, używając właściwości określonych elementów wykresu.

Typ: liczba
Domyślna: automatycznie.
forceIFrame

Rysuje wykres wewnątrz wbudowanej ramki. (Pamiętaj, że ta opcja jest ignorowana w IE8 – wszystkie wykresy IE8 są ujęte w ramki iFrame).

Typ: wartość logiczna
Wartość domyślna: false
wysokość

Wysokość wykresu w pikselach.

Typ: liczba
Domyślna: wysokość elementu, który go zawiera.
oś czasu.barLabelStyle

Obiekt określający styl tekstu etykiety słupkowej. Ma ten format:

{fontName: <string>, fontSize: <string>}

Zobacz też fontName i fontSize w tej tabeli.

Typ: obiekt
Domyślne: null
osi czasu.kolorByRowLabel

Jeśli ma wartość Prawda, kolory na poszczególnych paskach są takie same. Domyślnym kolorem jest 1 kolor na etykietę paska.

Typ: wartość logiczna
Wartość domyślna: false
oś czasu.grupaByRowLabel

Jeśli ma wartość Fałsz, każdy wiersz w wierszu dataTable tworzy po 1 wierszu. Ustawieniem słupków z tą samą etykietą wiersza jest zebranie go w jednym wierszu.

Typ: wartość logiczna
Wartość domyślna: true
harmonogram.wierszetykietyStyl

Obiekt określający styl tekstu etykiety wiersza. Ma ten format:

{color: <string>, fontName: <string>, fontSize: <string>}

color może być dowolnym ciągiem koloru HTML, na przykład 'red' lub '#00cc00'. Zobacz też fontName i fontSize w tej tabeli.

Typ: obiekt
Domyślne: null
oś czasu.showBarLabels

Jeśli ma wartość Fałsz, etykiety paska są pomijane. Domyślne ustawienie to wyświetlanie ich.

Typ: wartość logiczna
Wartość domyślna: true
osi czasu.etykietywierszowe

Jeśli ma wartość Fałsz, etykiety wierszy są pomijane. Domyślne ustawienie to wyświetlanie ich.

Typ: wartość logiczna
Wartość domyślna: true
oś czasu.jedenkolor

Kolorowe paski tak samo. Wartość określona jako wartość szesnastkowa (np. „#8d8”).

Typ: ciąg znaków
Domyślne:null
tooltip.isHtml

Ustaw wartość false, aby używać etykiet z renderowaniem SVG (a nie z renderowaniem HTML). Więcej informacji znajdziesz w artykule na temat dostosowywania treści etykietki.

Uwaga: wizualizacja wykresu bąbelkowego nie obsługuje dostosowywania zawartości etykietki HTML za pomocą roli danych kolumny etykietki.

Typ: wartość logiczna
Wartość domyślna: true
tooltip.trigger

Interakcja użytkownika, która powoduje wyświetlenie etykietki:

  • „focus” – etykietka jest wyświetlana, gdy użytkownik najedzie kursorem na element.
  • „none” – etykietka nie będzie wyświetlana.
Typ: ciąg znaków
Domyślny: „focus”
szerokość

Szerokość wykresu w pikselach.

Typ: liczba
Domyślna – szerokość elementu, który zawiera.

Metody

Metoda
draw(data, options)

Rysuje wykres. Wykres akceptuje dalsze wywołania metody dopiero po wywołaniu zdarzenia ready. Extended description,

Typ zwrotu: brak
clearChart()

Czyści wykres i usuwa wszystkie przydzielone zasoby.

Typ zwrotu: brak
getSelection()

Zwraca tablicę wybranych elementów wykresu. Elementy, które można wybrać, to paski, legendy i kategorie. Na tym wykresie w danym momencie możesz wybrać tylko 1 element. Extended description.

Typ zwrotu: tablica elementów wyboru.

Zdarzenia

Nazwa
error

Uruchamiane, gdy podczas próby renderowania wykresu wystąpi błąd.

Właściwości: id, message
onmouseover

Uruchamiane, gdy użytkownik najedzie kursorem na jednostkę wizualną. Zwraca indeksy wierszy i kolumn odpowiedniego elementu tabeli danych. Pasek odpowiada komórce w tabeli danych, wpis legendy w kolumnie (indeks wiersza ma wartość null) i kategoria w wierszu (indeks kolumny ma wartość null).

Właściwości: wiersz, kolumna.
onmouseout

Uruchamiane, gdy użytkownik odsunie kursor od jednostki wizualnej. Zwraca indeksy wierszy i kolumn odpowiedniego elementu tabeli danych. Pasek odpowiada komórce w tabeli danych, wpis legendy w kolumnie (indeks wiersza ma wartość null) i kategoria w wierszu (indeks kolumny ma wartość null).

Właściwości: wiersz, kolumna.
ready

Wykres jest gotowy do wywołań metod zewnętrznych. Jeśli chcesz korzystać z wykresu i metod wywoływania po narysowaniu, musisz skonfigurować odbiornik tego zdarzenia przed wywołaniem metody draw i wywołanie ich dopiero po uruchomieniu zdarzenia.

Właściwości: brak
select

Uruchamiane, gdy użytkownik kliknie element wizualny. Aby dowiedzieć się, co zostało wybrane, zadzwoń pod numer getSelection().

Właściwości: brak

Zasady dotyczące danych

Cały kod i dane są przetwarzane i renderowane w przeglądarce. Żadne dane nie są wysyłane do żadnego serwera.