123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- <!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">
- ${demo.css}
- </style>
- <script type="text/javascript">
- $(function () {
- $.getJSON('http://www.hcharts.cn/datas/jsonp.php?filename=usdeur.json&callback=?', function (data) {
- var detailChart;
- $(document).ready(function () {
- // create the detail chart
- function createDetail(masterChart) {
- // prepare the detail chart
- var detailData = [],
- detailStart = data[0][0];
- $.each(masterChart.series[0].data, function () {
- if (this.x >= detailStart) {
- detailData.push(this.y);
- }
- });
- // create a detail chart referenced by a global variable
- detailChart = $('#detail-container').highcharts({
- chart: {
- marginBottom: 120,
- reflow: false,
- marginLeft: 50,
- marginRight: 20,
- style: {
- position: 'absolute'
- }
- },
- credits: {
- enabled: false
- },
- title: {
- text: 'Historical USD to EUR Exchange Rate'
- },
- subtitle: {
- text: 'Select an area by dragging across the lower chart'
- },
- xAxis: {
- type: 'datetime'
- },
- yAxis: {
- title: {
- text: null
- },
- maxZoom: 0.1
- },
- tooltip: {
- formatter: function () {
- var point = this.points[0];
- return '<b>' + point.series.name + '</b><br/>' + Highcharts.dateFormat('%A %B %e %Y', this.x) + ':<br/>' +
- '1 USD = ' + Highcharts.numberFormat(point.y, 2) + ' EUR';
- },
- shared: true
- },
- legend: {
- enabled: false
- },
- plotOptions: {
- series: {
- marker: {
- enabled: false,
- states: {
- hover: {
- enabled: true,
- radius: 3
- }
- }
- }
- }
- },
- series: [{
- name: 'USD to EUR',
- pointStart: detailStart,
- pointInterval: 24 * 3600 * 1000,
- data: detailData
- }],
- exporting: {
- enabled: false
- }
- }).highcharts(); // return chart
- }
- // create the master chart
- function createMaster() {
- $('#master-container').highcharts({
- chart: {
- reflow: false,
- borderWidth: 0,
- backgroundColor: null,
- marginLeft: 50,
- marginRight: 20,
- zoomType: 'x',
- events: {
- // listen to the selection event on the master chart to update the
- // extremes of the detail chart
- selection: function (event) {
- var extremesObject = event.xAxis[0],
- min = extremesObject.min,
- max = extremesObject.max,
- detailData = [],
- xAxis = this.xAxis[0];
- // reverse engineer the last part of the data
- $.each(this.series[0].data, function () {
- if (this.x > min && this.x < max) {
- detailData.push([this.x, this.y]);
- }
- });
- // move the plot bands to reflect the new detail span
- xAxis.removePlotBand('mask-before');
- xAxis.addPlotBand({
- id: 'mask-before',
- from: data[0][0],
- to: min,
- color: 'rgba(0, 0, 0, 0.2)'
- });
- xAxis.removePlotBand('mask-after');
- xAxis.addPlotBand({
- id: 'mask-after',
- from: max,
- to: data[data.length - 1][0],
- color: 'rgba(0, 0, 0, 0.2)'
- });
- detailChart.series[0].setData(detailData);
- return false;
- }
- }
- },
- title: {
- text: null
- },
- xAxis: {
- type: 'datetime',
- showLastTickLabel: true,
- maxZoom: 14 * 24 * 3600000, // fourteen days
- plotBands: [{
- id: 'mask-before',
- from: data[0][0],
- to: data[data.length - 1][0],
- color: 'rgba(0, 0, 0, 0.2)'
- }],
- title: {
- text: null
- }
- },
- yAxis: {
- gridLineWidth: 0,
- labels: {
- enabled: false
- },
- title: {
- text: null
- },
- min: 0.6,
- showFirstLabel: false
- },
- tooltip: {
- formatter: function () {
- return false;
- }
- },
- legend: {
- enabled: false
- },
- credits: {
- enabled: false
- },
- plotOptions: {
- series: {
- fillColor: {
- linearGradient: [0, 0, 0, 70],
- stops: [
- [0, Highcharts.getOptions().colors[0]],
- [1, 'rgba(255,255,255,0)']
- ]
- },
- lineWidth: 1,
- marker: {
- enabled: false
- },
- shadow: false,
- states: {
- hover: {
- lineWidth: 1
- }
- },
- enableMouseTracking: false
- }
- },
- series: [{
- type: 'area',
- name: 'USD to EUR',
- pointInterval: 24 * 3600 * 1000,
- pointStart: data[0][0],
- data: data
- }],
- exporting: {
- enabled: false
- }
- }, function (masterChart) {
- createDetail(masterChart);
- })
- .highcharts(); // return chart instance
- }
- // make the container smaller and add a second container for the master chart
- var $container = $('#container')
- .css('position', 'relative');
- $('<div id="detail-container">')
- .appendTo($container);
- $('<div id="master-container">')
- .css({
- position: 'absolute',
- top: 300,
- height: 100,
- width: '100%'
- })
- .appendTo($container);
- // create master and in its callback, create the detail chart
- createMaster();
- });
- });
- });
- </script>
- </head>
- <body>
- <script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>
- <script src="http://cdn.hcharts.cn/highcharts/modules/exporting.js"></script>
- <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
- </body>
- </html>
|