Cronogramas

Descripción general

Un cronograma es un gráfico en el que se muestra cómo se usa un conjunto de recursos a lo largo del tiempo. Si administras un proyecto de software y deseas ilustrar quién hace qué y cuándo, o si estás organizando una conferencia y necesitas programar salas de reuniones, un cronograma suele ser una opción de visualización razonable. Un tipo popular de cronograma es el diagrama de Gantt.

Nota: En los objetos de fecha de JavaScript, los meses se indexan desde cero y aumentan hasta once, enero es el mes 0 y diciembre el mes 11. Si tu cronograma parece estar fuera de un mes, el más probable es el motivo. Para obtener más información, consulta la página Fechas y horarios.

Un ejemplo simple

Digamos que quieres trazar cuándo los presidentes estadounidenses cumplieron sus mandatos. Aquí, los "recursos" son los presidentes, y podemos representar el término de cada presidente como una barra:

Si colocas el cursor sobre una barra, aparecerá un cuadro de información con información más detallada.

Después de cargar el paquete timeline y definir una devolución de llamada para dibujar el gráfico cuando se renderiza la página, el método drawChart() crea una instancia de google.visualization.Timeline() y, luego, llena un dataTable con una fila para cada presidente.

Dentro de dataTable, la primera columna es el nombre del presidente, y la segunda y tercera columna indican las horas de inicio y finalización. Estos tienen el tipo Date de JavaScript, pero también pueden ser números sin formato.

Por último, invocamos el método draw() del gráfico, que lo muestra dentro de un div con el mismo identificador (timeline) que se usó cuando se declaró container en la primera línea de 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>

Los cronogramas de Google Charts son personalizables y, en los siguientes ejemplos, te mostraremos algunas formas comunes de adaptar el aspecto de tus cronogramas.

Cómo etiquetar las barras

Además de las etiquetas de fila ("Washington", "Adams", "Jefferson" anterior), puedes etiquetar barras individuales. Aquí, cambiamos las etiquetas de las filas a números simples y colocamos el nombre de cada presidente en la barra.

En este código, insertamos una columna nueva en nuestros datos para contener las etiquetas de la barra: el nombre completo de cada presidente. Cuando hay cuatro columnas en un dataTable de cronograma, la primera se interpreta como la etiqueta de fila, la segunda como la etiqueta de barra y la tercera y cuarta como la etiqueta de inicio y fin.

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

Nuestras etiquetas de filas nuevas anteriores no son muy informativas, así que las quitemos con la opción showRowLabels de cronograma.

De forma predeterminada, el valor de showRowLabels es true. Si se establece en false, se quitan las etiquetas de fila:

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

Ejemplo avanzado

Para que nuestro cronograma sea más complejo, agreguemos vicepresidentes y secretarios de estado a nuestro estatuto. John Adams fue vicepresidente antes de asumir el rol de presidente, Thomas Jefferson fue secretario de Estado, luego vicepresidente y, por último, presidente.

En los cronogramas, un recurso tendrá el mismo color, incluso cuando aparezca en varias filas, por lo que, en el siguiente gráfico, cada persona se representa con un color coherente.

Algunos secretarios de estado actuaron durante períodos muy breves, por lo que este gráfico es una buena prueba de etiquetado. Cuando una etiqueta es demasiado grande para la barra, se abrevia o se elimina, según el tamaño de la barra. Los usuarios siempre pueden colocar el cursor sobre la barra para obtener información sobre la herramienta.

En el cronograma se organizarán las filas (de presidente, de vicepresidente y de secretario de Estado), ya que ese es el orden en el que aparecen en el código que aparece a continuación. Sin embargo, el diseño de las barras está determinado solo por las horas de inicio y finalización, por lo que intercambiar dos secretarios de estado o dos presidentes en dataTable no tiene ningún efecto en el gráfico.

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

Cómo colocar barras en una fila

A diferencia de los papas, solo puede haber un presidente de EE.UU. a la vez, por lo que, si etiquetamos todas nuestras filas como “Presidentes”, el cronograma combinará las tres filas de nuestro primer gráfico en una fila para lograr una presentación más limpia. Puedes controlar este comportamiento con la opción groupByRowLabel.

Este es el comportamiento predeterminado:

Ahora, establezcamos groupByRowLabel en false y dividamos la fila en tres:

Este es el código para desactivar la agrupación:

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

Cómo controlar los colores

De forma predeterminada, Gráficos de Google elige colores optimizados para la estética y la legibilidad (incluidos los usuarios con discapacidades visuales). Puedes adaptar el comportamiento predeterminado con las opciones colorByRowLabel, singleColor, backgroundColor y colors.

La opción colorByRowLabel colorea todas las barras de la misma fila. Esta puede ser una buena opción cuando hay espacios entre las barras.

colorByRowLabel se establece de forma predeterminada en false, por lo que aquí anulamos eso y lo configuramos como 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>

Si deseas que todas las barras tengan el mismo color, independientemente de la fila en la que se encuentren, usa la opción singleColor:

En el siguiente código, singleColor se establece en un valor hexadecimal para colorear todas las barras de color verde claro:

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

Puedes controlar el color de fondo de las filas con la opción backgroundColor:

backgroundColor se especifica como un valor hexadecimal. Aquí, lo vinculamos con colorByRowLabel para mostrar pistas en una conferencia:

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

Luego, para establecer el color de fondo en alternado o no alternativo por índice de fila, usa la opción alternatingRowStyle (activa v51+):

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

Si deseas controlar los colores de barras individuales, usa la opción colors:

colors toma un array de valores hexadecimales, que se aplican a las barras en orden:

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

Si tu gráfico requiere más colores de los que se indican, se comportará como si singleColor se hubiera establecido en el primer color de la lista. (Esto se aplica a todos los gráficos de Google, no solo a los cronogramas).

Otra forma de controlar los colores de barras individuales es usar una columna con la función de estilo.

El código para agregar y propagar una columna de estilo:

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

Cómo cambiar las fuentes

Puedes elegir el tipo de letra y la fuente para las etiquetas de cada fila con rowLabelStyle y para las etiquetas de cada barra con barLabelStyle. Ambos se muestran a continuación.

Nota: Asegúrate de elegir los tipos de letra que podrán renderizar los navegadores de tus usuarios.

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

No puedes establecer el color del texto en barLabel.

Líneas de cuadrícula superpuestas

Gráficos de Google realiza pequeños ajustes a los extremos de las barras para evitar ocultar las líneas de cuadrícula del cronograma. Para evitar este comportamiento, establece la opción avoidOverlappingGridLines en false.

Para ilustrar el efecto, aquí hay dos ejemplos: el primero con una línea de cuadrícula superpuesta y el segundo sin.

Este es el código que se superpone con las líneas de cuadrícula:

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

Cómo personalizar la información sobre la herramienta

Puedes personalizar lo que ven los usuarios cuando colocan el cursor sobre las barras de un cronograma si agregas una columna de información sobre la herramienta en una tabla de datos de cinco columnas. Para proporcionar información sobre la herramienta no predeterminada, cada fila de la tabla de datos debe tener las cinco columnas (etiqueta de fila, etiqueta de barra, información sobre la herramienta, inicio y fin):

Cuando colocas el cursor sobre una barra, aparece un cuadro de información con el texto definido en la tercera columna. En este gráfico, debemos establecer la segunda columna en valores ficticios (aquí, null) para que la información sobre la herramienta pueda existir en la tercera columna.

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

Cargando

El nombre del paquete google.charts.load es timeline:

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

El nombre de clase de la visualización es google.visualization.Timeline:

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

Formato de los datos

Filas: Cada fila de la tabla representa una barra de cronograma.

Columnas:

  Columna 0 Columna 1 Columna 2 Columna 3 Columna 4
Objetivo: Etiqueta de fila Etiqueta de barra (opcional) Información (opcional) Iniciar Finalizar
Tipo de datos: cadena cadena cadena número o fecha número o fecha
Role: datos datos información sobre la herramienta datos datos

 

Opciones de configuración

Nombre
alternatingRowStyle

Indica si el gráfico debe alternar el color de fondo según el índice de fila (es decir, cambiar el tono del color de fondo de las filas con índices uniformes a un tono más oscuro). Si es falso, el fondo del gráfico tendrá un color uniforme. Si es verdadero, el fondo del gráfico alternará el tono por índice de fila. (Nota: v51 y versiones posteriores activas)

Tipo: booleano
Predeterminado: verdadero
avoidOverlappingGridLines

Indica si los elementos de visualización (p.ej., las barras de un cronograma) deben oscurecer las líneas de cuadrícula. Si es falso, las líneas de la cuadrícula pueden estar cubiertas por completo con elementos de pantalla. Si es verdadero, los elementos de visualización se pueden alterar para mantener visibles las líneas de cuadrícula.

Tipo: booleano
Predeterminado: verdadero
backgroundColor

El color de fondo del área principal del gráfico. Puede ser una cadena simple de color HTML, por ejemplo: 'red' o '#00cc00', o un objeto con las siguientes propiedades.

Tipo: objeto o cadena
Predeterminado: “white”
colores

Los colores que se usarán para los elementos del gráfico. Un array de cadenas, en el que cada elemento es una cadena de color HTML, por ejemplo: colors:['red','#004411'].

Tipo: Arreglo de cadenas
Predeterminado: Colores predeterminados
enableInteractivity

Si el gráfico arroja eventos basados en el usuario o reacciona a la interacción del usuario. Si es falso, el gráfico no arrojará "seleccionar" ni otros eventos basados en interacciones (pero arrojará eventos listos o de error), ni mostrará texto flotante ni cambiará según la entrada del usuario.

Tipo: booleano
Predeterminado: verdadero
fontName

Es el tipo de fuente predeterminado para todo el texto del gráfico. Puedes anular esto usando propiedades para elementos específicos del gráfico.

Tipo: string
Predeterminado: "Arial"
fontSize

El tamaño de fuente predeterminado, en píxeles, de todo el texto en el gráfico. Puedes anular esto usando propiedades para elementos específicos del gráfico.

Tipo: Número
Predeterminada: automática
forceIFrame

Dibuja el gráfico dentro de un marco intercalado. (Ten en cuenta que, en IE8, esta opción se ignora; todos los gráficos de IE8 se dibujan en iframes).

Tipo: booleano
Predeterminado: falso
height

Altura del gráfico en píxeles.

Tipo: Número
Predeterminado: la altura del elemento contenedor
timeline.barLabelStyle

Un objeto que especifica el estilo de texto de la etiqueta de barra. Tiene el siguiente formato:

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

Consulta también fontName y fontSize en esta tabla.

Tipo: objeto
Valor predeterminado: nulo
timeline.colorByRowLabel

Si se configura como verdadero, se aplica el mismo color a todas las barras de la fila. La opción predeterminada es usar un color por etiqueta de barra.

Tipo: booleano
Predeterminado: falso
timeline.groupByRowLabel

Si se configura como falso, crea una fila por cada entrada dataTable. La configuración predeterminada es recopilar barras con la misma etiqueta de fila en una fila.

Tipo: booleano
Predeterminado: verdadero
timeline.rowLabelStyle

Un objeto que especifica el estilo de texto de la etiqueta de fila. Tiene el siguiente formato:

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

color puede ser cualquier cadena de color HTML, por ejemplo, 'red' o '#00cc00'. Consulta también fontName y fontSize en esta tabla.

Tipo: objeto
Valor predeterminado: nulo
timeline.showBarLabels

Si se configura como falsa, se omiten las etiquetas de barra. La configuración predeterminada es mostrarlos.

Tipo: booleano
Predeterminado: verdadero
timeline.showRowLabels

Si se configura como falsa, se omiten las etiquetas de fila. La configuración predeterminada es mostrarlos.

Tipo: booleano
Predeterminado: verdadero
timeline.singleColor

Aplica los mismos colores a todas las barras. Se especifica como un valor hexadecimal (p.ej., “#8d8”).

Tipo: string
Valor predeterminado: nulo
tooltip.isHtml

Configúralo en false para usar información sobre la herramienta renderizada por SVG (en lugar de hacerlo por HTML). Consulta Cómo personalizar el contenido de la información sobre la herramienta para obtener más detalles.

Nota: La personalización del contenido HTML de la información sobre la herramienta mediante el rol de datos de la columna de información no es compatible con la visualización del diagrama de burbujas.

Tipo: booleano
Predeterminado: verdadero
tooltip.trigger

La interacción del usuario que hace que se muestre el cuadro de información:

  • "enfoque": La información sobre la herramienta se mostrará cuando el usuario coloque el cursor sobre el elemento.
  • "none": No se mostrará la información sobre la herramienta.
Tipo: string
Predeterminado: "foco"
width

Es el ancho del gráfico (en píxeles).

Tipo: Número
Predeterminado: Ancho del elemento contenedor

Métodos

Método
draw(data, options)

Dibuja el gráfico. El gráfico acepta más llamadas de método solo después de que se activa el evento ready. Extended description.

Tipo de datos que se muestra: ninguno
clearChart()

Borra el gráfico y libera todos sus recursos asignados.

Tipo de datos que se muestra: ninguno
getSelection()

Muestra un array de las entidades del gráfico seleccionadas. Las entidades seleccionables son barras, entradas de leyenda y categorías. Para este gráfico, solo se puede seleccionar una entidad en un momento determinado. Extended description .

Tipo de datos que se muestra: Es el array de elementos de selección.

Eventos

Nombre
error

Se activa cuando se produce un error cuando se intenta renderizar el gráfico.

Propiedades: ID, mensaje
onmouseover

Se activa cuando el usuario desplaza el mouse sobre una entidad visual. Devuelve los índices de fila y columna del elemento de tabla de datos correspondiente. Una barra se correlaciona con una celda de la tabla de datos, una leyenda en una columna (el índice de fila es nulo) y una categoría con una fila (el índice de la columna es nulo).

Propiedades:fila, columna
onmouseout

Se activa cuando el usuario aleja el mouse de una entidad visual. Devuelve los índices de filas y columnas del elemento de tabla de datos correspondiente. Una barra se correlaciona con una celda de la tabla de datos, una leyenda en una columna (el índice de fila es nulo) y una categoría con una fila (el índice de la columna es nulo).

Propiedades:fila, columna
ready

El gráfico está listo para llamadas de método externas. Si deseas interactuar con el gráfico y llamar a los métodos después de dibujarlo, debes configurar un objeto de escucha para este evento antes de llamar al método draw e llamarlos solo después de que se haya activado el evento.

Propiedades: ninguna
select

Se activa cuando el usuario hace clic en una entidad visual. Para saber qué se seleccionó, llama a getSelection().

Propiedades: ninguna

Política de datos

Todo el código y los datos se procesan y renderizan en el navegador. No se envían datos a ningún servidor.