UNPKG

light-chart

Version:

Charts for mobile visualization.

237 lines (226 loc) 8.44 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>面积图</title> <link rel="stylesheet" href="./assets/common.css"> <style type="text/css"> .chartWrapper { position: relative; } .chartWrapper > canvas { position: absolute; left: 0; top: 0; pointer-events:none; } .chartLineWrapper { width: 600px; overflow-x: scroll; } </style> </head> <body> <div> <div class="chartWrapper"> <div class="chartLineWrapper"> <canvas id="myChart"></canvas> </div> <canvas id="myChartAxis"></canvas> </div> </div> <script src="./assets/jquery-3.2.1.min.js"></script> <script src="../build/f2-all.js"></script> <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script> <script> const { Canvas } = F2.G; // 两层 canvas 方案: const Plugin = { beforeRenderAxis(chart) { const canvas = new Canvas({ el: 'myChartAxis', width: 600, height: 300, pixelRatio: window.devicePixelRatio, }); const axisController = chart.get('axisController'); axisController.frontPlot = canvas.addGroup(); axisController.canvas = canvas; }, beforeCanvasDraw(chart) { const axisController = chart.get('axisController'); const padding = chart.get('padding'); const frontPlot = axisController.frontPlot; frontPlot.addShape('rect', { attrs: { x: 0, y: 0, width: padding[3], height: chart.get('height') - padding[0] - padding[2], fill: '#fff', }, zIndex: -1, }); frontPlot.sort(); axisController.canvas.draw(); }, }; const data = [ { value: 63.4, city: 'New York', date: '2011-10-01' }, { value: 62.7, city: 'San Francisco', date: '2011-10-01' }, { value: 72.2, city: 'Austin', date: '2011-10-01' }, { value: 58, city: 'New York', date: '2011-10-02' }, { value: 59.9, city: 'San Francisco', date: '2011-10-02' }, { value: 67.7, city: 'Austin', date: '2011-10-02' }, { value: 53.3, city: 'New York', date: '2011-10-03' }, { value: 59.1, city: 'San Francisco', date: '2011-10-03' }, { value: 69.4, city: 'Austin', date: '2011-10-03' }, { value: 55.7, city: 'New York', date: '2011-10-04' }, { value: 58.8, city: 'San Francisco', date: '2011-10-04' }, { value: 68, city: 'Austin', date: '2011-10-04' }, { value: 64.2, city: 'New York', date: '2011-10-05' }, { value: 58.7, city: 'San Francisco', date: '2011-10-05' }, { value: 72.4, city: 'Austin', date: '2011-10-05' }, { value: 58.8, city: 'New York', date: '2011-10-06' }, { value: 57, city: 'San Francisco', date: '2011-10-06' }, { value: 77, city: 'Austin', date: '2011-10-06' }, { value: 57.9, city: 'New York', date: '2011-10-07' }, { value: 56.7, city: 'San Francisco', date: '2011-10-07' }, { value: 82.3, city: 'Austin', date: '2011-10-07' }, { value: 61.8, city: 'New York', date: '2011-10-08' }, { value: 56.8, city: 'San Francisco', date: '2011-10-08' }, { value: 78.9, city: 'Austin', date: '2011-10-08' }, { value: 69.3, city: 'New York', date: '2011-10-09' }, { value: 56.7, city: 'San Francisco', date: '2011-10-09' }, { value: 68.8, city: 'Austin', date: '2011-10-09' }, { value: 71.2, city: 'New York', date: '2011-10-10' }, { value: 60.1, city: 'San Francisco', date: '2011-10-10' }, { value: 68.7, city: 'Austin', date: '2011-10-10' }, { value: 68.7, city: 'New York', date: '2011-10-11' }, { value: 61.1, city: 'San Francisco', date: '2011-10-11' }, { value: 70.3, city: 'Austin', date: '2011-10-11' }, { value: 61.8, city: 'New York', date: '2011-10-12' }, { value: 61.5, city: 'San Francisco', date: '2011-10-12' }, { value: 75.3, city: 'Austin', date: '2011-10-12' }, { value: 63, city: 'New York', date: '2011-10-13' }, { value: 64.3, city: 'San Francisco', date: '2011-10-13' }, { value: 76.6, city: 'Austin', date: '2011-10-13' }, { value: 66.9, city: 'New York', date: '2011-10-14' }, { value: 67.1, city: 'San Francisco', date: '2011-10-14' }, { value: 66.6, city: 'Austin', date: '2011-10-14' }, { value: 61.7, city: 'New York', date: '2011-10-15' }, { value: 64.6, city: 'San Francisco', date: '2011-10-15' }, { value: 68, city: 'Austin', date: '2011-10-15' }, { value: 61.8, city: 'New York', date: '2011-10-16' }, { value: 61.6, city: 'San Francisco', date: '2011-10-16' }, { value: 70.6, city: 'Austin', date: '2011-10-16' }, { value: 62.8, city: 'New York', date: '2011-10-17' }, { value: 61.1, city: 'San Francisco', date: '2011-10-17' }, { value: 71.1, city: 'Austin', date: '2011-10-17' }, { value: 60.8, city: 'New York', date: '2011-10-18' }, { value: 59.2, city: 'San Francisco', date: '2011-10-18' }, { value: 70, city: 'Austin', date: '2011-10-18' }, { value: 62.1, city: 'New York', date: '2011-10-19' }, { value: 58.9, city: 'San Francisco', date: '2011-10-19' }, { value: 61.6, city: 'Austin', date: '2011-10-19' }, { value: 65.1, city: 'New York', date: '2011-10-20' }, { value: 57.2, city: 'San Francisco', date: '2011-10-20' }, { value: 57.4, city: 'Austin', date: '2011-10-20' }, { value: 55.6, city: 'New York', date: '2011-10-21' }, { value: 56.4, city: 'San Francisco', date: '2011-10-21' }, { value: 64.3, city: 'Austin', date: '2011-10-21' }, { value: 54.4, city: 'New York', date: '2011-10-22' }, { value: 60.7, city: 'San Francisco', date: '2011-10-22' }, { value: 72.4, city: 'Austin', date: '2011-10-22' }, { value: 54.4, city: 'New York', date: '2011-10-23' }, { value: 65.1, city: 'San Francisco', date: '2011-10-23' }, { value: 72.4, city: 'Austin', date: '2011-10-23' }, { value: 54.8, city: 'New York', date: '2011-10-24' }, { value: 60.9, city: 'San Francisco', date: '2011-10-24' }, { value: 72.5, city: 'Austin', date: '2011-10-24' }, { value: 57.9, city: 'New York', date: '2011-10-25' }, { value: 56.1, city: 'San Francisco', date: '2011-10-25' }, { value: 72.7, city: 'Austin', date: '2011-10-25' }, { value: 54.6, city: 'New York', date: '2011-10-26' }, { value: 54.6, city: 'San Francisco', date: '2011-10-26' }, { value: 73.4, city: 'Austin', date: '2011-10-26' }, { value: 54.4, city: 'New York', date: '2011-10-27' }, { value: 56.1, city: 'San Francisco', date: '2011-10-27' }, { value: 70.7, city: 'Austin', date: '2011-10-27' }, { value: 42.5, city: 'New York', date: '2011-10-28' }, { value: 58.1, city: 'San Francisco', date: '2011-10-28' }, { value: 56.8, city: 'Austin', date: '2011-10-28' }, { value: 40.9, city: 'New York', date: '2011-10-29' }, { value: 57.5, city: 'San Francisco', date: '2011-10-29' }, { value: 51, city: 'Austin', date: '2011-10-29' }, { value: 38.6, city: 'New York', date: '2011-10-30' }, { value: 57.7, city: 'San Francisco', date: '2011-10-30' }, { value: 54.9, city: 'Austin', date: '2011-10-30' }, { value: 44.2, city: 'New York', date: '2011-10-31' }, { value: 55.1, city: 'San Francisco', date: '2011-10-31' }, { value: 58.8, city: 'Austin', date: '2011-10-31' }, { value: 49.6, city: 'New York', date: '2011-11-01' }, { value: 57.9, city: 'San Francisco', date: '2011-11-01' }, { value: 62.6, city: 'Austin', date: '2011-11-01' }, { value: 47.2, city: 'New York', date: '2011-11-02' }, { value: 64.6, city: 'San Francisco', date: '2011-11-02' }, { value: 71, city: 'Austin', date: '2011-11-02' }, { value: 50.1, city: 'New York', date: '2011-11-03' }, ]; const chart = new F2.Chart({ id: 'myChart', width: 600, height: 300, pixelRatio: window.devicePixelRatio, plugins: Plugin, // animate: false }); chart.source(data, { date: { range: [0, 1], type: 'timeCat', mask: 'MM-DD', }, value: { tickCount: 5, }, }); chart.legend(false); chart.axis('date', { label(text, index, total) { const textCfg = { top: false, }; if (index === 0) { textCfg.textAlign = 'left'; } if (index === total - 1) { textCfg.textAlign = 'right'; } return textCfg; }, line: { top: true, }, }); chart.axis('value', { label: { top: true, }, grid: { top: true, }, }); chart .line() .position('date*value') .color('city'); chart.render(); setTimeout(function() { // changeWidth(2000, chart); chart.changeSize(2000); console.log(chart.get('canvas')); }, 3000); </script> </body> </html>