El gráfico circular Flot da un error en firebug: "excepción no capturada: Dimensiones no válidas para la gráfica, ancho = nulo, alto = nulo"


I usando flot gráfico circular para trazar gráficos circulares. pero muestra un error en firebug que

Excepción no capturada: Dimensiones no válidas para la gráfica, width = null, height = null

También he dado la altura y el ancho de la hoja de estilo. y trató también así

<div id="placeholder1" style="width:140px;height:140px" ></div>

Cómo resolver esto?

Author: user1662343, 2012-09-11

7 answers

Compruebe estos:

  • Primero incluye la biblioteca jQuery y luego flot js library

  • Envuelva todo el código dentro de la función de controlador $(document).ready().

  • Ata el flotador con id correcto y no se repite el mismo id.

  • Si su div es dinámico, es decir, apareció al DOM después de cargar la página, entonces bind plot() después el elemento se le apareció a DOM.

 36
Author: thecodeparadox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-11 09:37:10

También tuve el mismo problema. Establecí un alto y un ancho en la etiqueta <div> y arregló el error.

Puede usar css en línea (como lo hice) o JS para establecer la altura y el ancho. Pero la función plot() se debe llamar solo después de establecer la altura de la <div>

<div class="bars_two" style="height:300px;"></div>
 12
Author: John Fonseka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-29 09:05:45

¡Yo también tuve este mismo problema! La respuesta no estaba en la lista anterior, así que aquí estaba mi problema y solución.

<div id="chart" class="chart" style="width:100%;height:250px;"></div>

Javascript:

 <script type="text/javascript">
    $(document).ready(function () {
        var data = [...];
        var options = {...};
        $.plot($("#placeholder"), data, options);
    });
</script>

So. Observe la función plot. Al principio, no tenía el # en el primer parámetro. Aparentemente, eso es necesario. Resolvió mis problemas.

GG.

 9
Author: Millar248,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-30 13:59:29

Una solución rápida que encontré es simplemente escribir algo entre las etiquetas div. Por ejemplo: Cambio <div id="placeholder"></div> a <div id="placeholder">.</div> o <div id="placeholder">randomtext</div>.

Personalmente, descubrí que usar espacio/pestañas/líneas nuevas no funciona en esta solución rápida.

 6
Author: hexicle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-31 02:39:07

Tuve el mismo problema integrando plantilla a rails. Esa es una mala manera, pero solo comento la línea que arroja la excepción y añado 2 líneas para establecer ancho y alto en 0 - me ayudó.

Canvas.prototype.resize = function(width, height) {

  if (width <= 0 || height <= 0) {
    // COMMENTED NEXT LINE
    // throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height);
    // NEW LINES ADDED
    width = 0;
    height = 0;
  }

  // ... others code 
}
 2
Author: kpblc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-10 15:39:50

Si coloca el html de su gráfico en div al que se le da la clase "display: none", obtendrá este error. Debe poner su gráfico html en div que se da "display: block" clase cuando " jquery.flot.js " está cargada.

<div id="pie_chart" class="chart"> </div>

Si este html está en cualquier div que tiene class="display: none" cuando "jquery.flot.js " está cargado, cámbialo a display: block

 2
Author: hubeybozkul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-18 12:44:19

Por lo tanto, parece que antes de renderizar en un gráfico, necesita volver a recuperar el elemento DOM. Dado que flot manipula los elementos e inserta los suyos propios, parece que está reemplazando el elemento con sus propios elementos.

En tu renderizado, haz:

$.plot($(".myChartId || #myChartClass"), myData, myOptions);

Esto no tiene nada que ver con estar en $(document).ready(), aunque es una buena práctica colocarlo dentro de esto.

Espero que esto ayude!

 1
Author: Brian Corbin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-18 12:43:25