Gráfico de curvas de Highcharts con carga asíncrona de datos

Highcharts 曲线图Gráfico de curvas de Highcharts

El siguiente ejemplo demuestra un gráfico de curvas con carga asíncrona de datos. Aquí usamos el método jQuery.getJSON() para cargar de forma asíncrona un archivo CSV:

En los capítulos anteriores ya hemos conocido la sintaxis de configuración de Highcharts. A continuación veamos un ejemplo completo:


Importar el archivo data.js

La carga asíncrona de datos requiere incluir los siguientes archivos JS:

<script src="https://code.highcharts.com/modules/data.js"></script> 

Configuración

Eje X

Configurar el eje X con intervalos semanales:

var xAxis = {
   tickInterval: 7 * 24 * 3600 * 1000, // 一周
   tickWidth: 0,
   gridLineWidth: 1,
   labels: {
      align: 'left',
      x: 3,
      y: -3
   }
};

Eje Y

Configurar el eje Y con intervalos semanales:

Configurar dos ejes Y:

var yAxis = [{ // 左边 Y 轴
      title: {
         text: null
      },
      labels: {
         align: 'left',
         x: 3,
         y: 16,
         format: '{value:.,0f}'
      },
      showFirstLabel: false
  },{ // 右边 Y 轴
      linkedTo: 0,
      gridLineWidth: 0,
      opposite: true,
      title: {
         text: null
      },
      labels: {
         align: 'right',
         x: -3,
         y: 16,
         format: '{value:.,0f}'
      },
      showFirstLabel: false
   }
];

plotOptions

plotOptions se utiliza para establecer las propiedades relacionadas con los puntos de datos en el gráfico.

 var plotOptions = {
   series: {
      cursor: 'pointer',
      point: {
         events: {
            click: function (e) {
               hs.htmlExpand(null, {
                  pageOrigin: {
                     x: e.pageX || e.clientX,
                     y: e.pageY || e.clientY
                  },
                  headingText: this.series.name,
                  maincontentText: Highcharts.dateFormat('%A, %b %e, %Y', this.x) 
                     + ':<br/> ' + this.y + ' visits',
                  width: 200
               });
            } 
         }
      },
      marker: {
        lineWidth: 1
      }
   }
}

Ejemplo

Nombre de archivo: highcharts_line_ajax.html

<html>
<head>
   <title>Highcharts 教程 | Ejemplo(example.com)</title>
   <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
   <script src="https://code.highcharts.com/highcharts.js"></script>   
   <script src="https://code.highcharts.com/modules/data.js"></script> 
</head>
<body>
<div id="container" style="width: 550px; height: 400px; margin: 0 auto"></div>
<script language="JavaScript">
$(document).ready(function() {
   var title = {
      text: 'Daily visits at www.highcharts.com'   
   };
   var subtitle = {
      text: 'Source: Google Analytics'
   };
   var xAxis = {
      tickInterval: 7 * 24 * 3600 * 1000, // one week
      tickWidth: 0,
      gridLineWidth: 1,
      labels: {
         align: 'left',
         x: 3,
         y: -3
      }
   };
   var yAxis = [{ // left y axis
         title: {
            text: null
         },
         labels: {
            align: 'left',
            x: 3,
            y: 16,
            format: '{value:.,0f}'
         },
         showFirstLabel: false
      },{ // right y axis
         linkedTo: 0,
         gridLineWidth: 0,
         opposite: true,
         title: {
            text: null
         },
         labels: {
            align: 'right',
            x: -3,
            y: 16,
            format: '{value:.,0f}'
         },
         showFirstLabel: false
      }
   ];   

   var tooltip = {
      shared: true,
      crosshairs: true
   }

   var legend = {
      align: 'left',
      verticalAlign: 'top',
      y: 20,
      floating: true,
      borderWidth: 0
   };

   var plotOptions = {
      series: {
         cursor: 'pointer',
         point: {
            events: {
               click: function (e) {
                  hs.htmlExpand(null, {
                     pageOrigin: {
                        x: e.pageX || e.clientX,
                        y: e.pageY || e.clientY
                     },
                     headingText: this.series.name,
                     maincontentText: Highcharts.dateFormat('%A, %b %e, %Y', this.x) 
                        + ':<br/> ' + this.y + ' visits',
                     width: 200
                  });
               }
            }
         },
         marker: {
            lineWidth: 1
         }
      }
   }
   
   var series =  [{
         name: 'All visits',
         lineWidth: 4,
         marker: {
            radius: 4
         }
      }, {
         name: 'New visitors'
      }]

   var json = {};

   json.title = title;
   json.subtitle = subtitle;
   json.xAxis = xAxis;
   json.yAxis = yAxis;
   json.tooltip = tooltip;
   json.legend = legend;
   json.series = series;
   json.plotOptions = plotOptions;
   
   var data = {
        csvURL: 'https://cdn.jsdelivr.net/gh/highcharts/highcharts@v7.0.0/samples/data/analytics.csv',
        beforeParse: function (csv) {
            return csv.replace(/\n\n/g, '\n');
        }
   };
   json.data = data;
   $('#container').highcharts(json);
    
});
</script>
</body>
</html>

El resultado del ejemplo anterior es:

Highcharts 曲线图Gráfico de curvas de Highcharts

Otras extensiones