1、背景:以前使用過echarts圖表,最新公司根據客戶需求準備開發個儀表盤美工出圖以下。html
因爲公司產品集成highcharts,發現highcharts儀表盤不知足需求,顧個性化開發。git
2、過程:github
echarts:百度開發,Api目前支持很差,主要採用canvas畫圖。canvas
highcharts: 國外產品,Api全面,還有各路大神的個性化圖表,主要採用svg畫圖。 api
也有人說:echarts至關於中國的WPS,而highchart至關於微軟officeecharts
建議,若是使用百度地圖展現圖表,那麼使用echarts(ps:支持國產)ide
若是以上兩款不知足需求,那麼能夠上手 d3js,圖表更多更強大。svg
官網地址: https://github.com/d3/d3/wiki/Galleryspa
api地址(中文的):https://github.com/d3/d3/wiki/API--%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8Ccode
3、結果:
上圖:(雖然差異仍是有,基本知足需求)
上代碼:https://code.hcharts.cn/demos/hhhhiD 打開地址,直接複製粘貼,運行看結果。
js:
// 公共配置 Highcharts.setOptions({ chart: { type: 'solidgauge' }, title: { text: '', }, pane: { center: ['50%', '60%'], size: '100%', startAngle: -140, endAngle: 140, background: { backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || '#fff', innerRadius: '60%', outerRadius: '100%', shape: 'arc' } }, tooltip: { enabled: false }, yAxis: { plotBands: { //borderColor:'#000000', // borderWidth:0, from: 0, to: 250, color: '#FFCCFF' // green }, stops: [ [0.1, '#55BF3B'], // green [0.5, '#DDDF0D'], // yellow [0.7, '#DF5353'] // red ], lineWidth: 0, minorTickInterval: null, tickPixelInterval: 100,//像素間隔 tickWidth: 2, tickAmount: 10,//刻度總數 tickPosition: 'inside',// 刻度線位置 內外 tickLength: 15, //tickmarkPlacement:'between', tickColor: '#ffffff', // visible:false,//座標軸是否顯示 title: { y: -50 }, labels: { enabled:false, y: 16 } }, plotOptions: { solidgauge: { dataLabels: { y: -20, borderWidth: 0, useHTML: true } } } }); // 速度儀表 var chart1 = Highcharts.chart('container-qtd', { yAxis: { min: 0, max: 200, title: { text: 'QTD' } }, credits: { enabled: false }, series: [{ data: [{ y:150, innerRadius: 80, // radius: 98, name:'dd', }], dataLabels: { style: { fontWeight: 'bold', fontSize: '20px', color: 'black' }, format: '<div style="text-align:center"><span style="font-size:25px;color:' + ((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}%</span><br/>' + '<span style="font-size:12px;color:silver">2462M</span></div>' } }] }); // 轉速儀表 var chart2 = Highcharts.chart('container-mtd', { yAxis: { min: 0, max: 150, title: { text: 'MTD' } }, credits: {//取消官網連接highcharts.com enabled: false, //添加本身的連接地址 // text: 'www.baidu.com', // href: 'https://www.baidu.com' }, series: [{ name: 'RPM', data: [{ y:58, innerRadius: 80, // radius: 98, name:'dd', }], dataLabels: { style: { fontWeight: 'bold', fontSize: '20px', color: 'black' }, format: '<div style="text-align:center"><span style="font-size:25px;color:' + ((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}%</span><br/>' + '<span style="font-size:12px;color:silver">58M</span></div>' } }] });
html:
<div style="width: 600px; height: 300px; margin: 0 auto"> <div id="container-qtd" style="width: 300px; height: 200px; float: left"> </div> <div id="container-mtd" style="width: 300px; height: 200px; float: left"> </div> </div>
後記:
當圖表值太大,有時間圖表顯示不全,顯示一半,官方解釋:https://api.hcharts.cn/highcharts#yAxis.max
max值自動向上取整問題,刻度線 tickAmount致使的。
tickAmount不設置就不會影響最大值問題。即max設置多少顯示多少,
tickAmount設置爲null、 0、2 都無論用。直接刪掉就好!不須要設置!!!