123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Highcharts Example</title>
- <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>
- <style type="text/css">
- .chart {
- min-width: 320px;
- max-width: 800px;
- height: 220px;
- margin: 0 auto;
- }
- </style>
- <!-- http://doc.jsfiddle.net/use/hacks.html#css-panel-hack -->
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <style>
- </style>
- <script type="text/javascript">
- /*
- The purpose of this demo is to demonstrate how multiple charts on the same page can be linked
- through DOM and Highcharts events and API methods. It takes a standard Highcharts config with a
- small variation for each data set, and a mouse/touch event handler to bind the charts together.
- */
- $(function () {
- /**
- * In order to synchronize tooltips and crosshairs, override the
- * built-in events with handlers defined on the parent element.
- */
- $('#container').bind('mousemove touchmove touchstart', function (e) {
- var chart,
- point,
- i,
- event;
- for (i = 0; i < Highcharts.charts.length; i = i + 1) {
- chart = Highcharts.charts[i];
- event = chart.pointer.normalize(e.originalEvent); // Find coordinates within the chart
- point = chart.series[0].searchPoint(event, true); // Get the hovered point
- if (point) {
- point.highlight(e);
- }
- }
- });
- /**
- * Override the reset function, we don't need to hide the tooltips and crosshairs.
- */
- Highcharts.Pointer.prototype.reset = function () {
- return undefined;
- };
- /**
- * Highlight a point by showing tooltip, setting hover state and draw crosshair
- */
- Highcharts.Point.prototype.highlight = function (event) {
- this.onMouseOver(); // Show the hover marker
- this.series.chart.tooltip.refresh(this); // Show the tooltip
- this.series.chart.xAxis[0].drawCrosshair(event, this); // Show the crosshair
- };
- /**
- * Synchronize zooming through the setExtremes event handler.
- */
- function syncExtremes(e) {
- var thisChart = this.chart;
- if (e.trigger !== 'syncExtremes') { // Prevent feedback loop
- Highcharts.each(Highcharts.charts, function (chart) {
- if (chart !== thisChart) {
- if (chart.xAxis[0].setExtremes) { // It is null while updating
- chart.xAxis[0].setExtremes(e.min, e.max, undefined, false, { trigger: 'syncExtremes' });
- }
- }
- });
- }
- }
- // Get the data. The contents of the data file can be viewed at
- // https://github.com/highcharts/highcharts/blob/master/samples/data/activity.json
- $.getJSON('http://www.hcharts.cn/datas/jsonp.php?filename=activity.json&callback=?', function (activity) {
- $.each(activity.datasets, function (i, dataset) {
- // Add X values
- dataset.data = Highcharts.map(dataset.data, function (val, j) {
- return [activity.xData[j], val];
- });
- $('<div class="chart">')
- .appendTo('#container')
- .highcharts({
- chart: {
- marginLeft: 40, // Keep all charts left aligned
- spacingTop: 20,
- spacingBottom: 20
- },
- title: {
- text: dataset.name,
- align: 'left',
- margin: 0,
- x: 30
- },
- credits: {
- enabled: false
- },
- legend: {
- enabled: false
- },
- xAxis: {
- crosshair: true,
- events: {
- setExtremes: syncExtremes
- },
- labels: {
- format: '{value} km'
- }
- },
- yAxis: {
- title: {
- text: null
- }
- },
- tooltip: {
- positioner: function () {
- return {
- x: this.chart.chartWidth - this.label.width, // right aligned
- y: -1 // align to title
- };
- },
- borderWidth: 0,
- backgroundColor: 'none',
- pointFormat: '{point.y}',
- headerFormat: '',
- shadow: false,
- style: {
- fontSize: '18px'
- },
- valueDecimals: dataset.valueDecimals
- },
- series: [{
- data: dataset.data,
- name: dataset.name,
- type: dataset.type,
- color: Highcharts.getOptions().colors[i],
- fillOpacity: 0.3,
- tooltip: {
- valueSuffix: ' ' + dataset.unit
- }
- }]
- });
- });
- });
- });
- </script>
- </head>
- <body>
- <script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>
- <div id="container"></div>
- </body>
- </html>
|