vue使用Highcharts實現(xiàn)不同高度的3D環(huán)形圖
本文實例為大家分享了Highcharts實現(xiàn)不同高度的3D環(huán)形圖的具體代碼,供大家參考,具體內(nèi)容如下
要實現(xiàn)的效果:
完整代碼如下:
// 修改3d餅圖繪制過程 var each = Highcharts.each, ?? ?round = Math.round, ?? ?cos = Math.cos, ?? ?sin = Math.sin, ?? ?deg2rad = Math.deg2rad; Highcharts.wrap(Highcharts.seriesTypes.pie.prototype, 'translate', function(proceed) { ?? ?proceed.apply(this, [].slice.call(arguments, 1)); ?? ?// Do not do this if the chart is not 3D ?? ?if (!this.chart.is3d()) { ?? ??? ?return; ?? ?} ?? ?var series = this, ?? ??? ?chart = series.chart, ?? ??? ?options = chart.options, ?? ??? ?seriesOptions = series.options, ?? ??? ?depth = seriesOptions.depth || 0, ?? ??? ?options3d = options.chart.options3d, ?? ??? ?alpha = options3d.alpha, ?? ??? ?beta = options3d.beta, ?? ??? ?z = seriesOptions.stacking ? (seriesOptions.stack || 0) * depth : series._i * depth; ?? ?z += depth / 2; ?? ?if (seriesOptions.grouping !== false) { ?? ??? ?z = 0; ?? ?} ?? ?each(series.data, function(point) { ?? ??? ?var shapeArgs = point.shapeArgs, ?? ??? ??? ?angle; ?? ??? ?point.shapeType = 'arc3d'; ?? ??? ?var ran = point.options.h; ?? ??? ?shapeArgs.z = z; ?? ??? ?shapeArgs.depth = depth * 0.75 + ran; ?? ??? ?shapeArgs.alpha = alpha; ?? ??? ?shapeArgs.beta = beta; ?? ??? ?shapeArgs.center = series.center; ?? ??? ?shapeArgs.ran = ran; ?? ??? ?angle = (shapeArgs.end + shapeArgs.start) / 2; ?? ??? ?point.slicedTranslation = { ?? ??? ??? ?translateX: round(cos(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)), ?? ??? ??? ?translateY: round(sin(angle) * seriesOptions.slicedOffset * cos(alpha * deg2rad)) ?? ??? ?}; ?? ?}); }); (function(H) { ?? ?H.wrap(Highcharts.SVGRenderer.prototype, 'arc3dPath', function(proceed) { ?? ??? ?// Run original proceed method ?? ??? ?var ret = proceed.apply(this, [].slice.call(arguments, 1)); ?? ??? ?ret.zTop = (ret.zOut + 0.5) / 100; ?? ??? ?return ret; ?? ?}); }(Highcharts)); // 生成不同高度的3d餅圖 Highcharts.chart('container', { ?? ?chart: { ?? ??? ?type: 'pie', ?? ??? ?animation: false, ?? ??? ?events: { ?? ??? ??? ?load: function() { ?? ??? ??? ??? ?var each = Highcharts.each, ?? ??? ??? ??? ??? ?points = this.series[0].points; ?? ??? ??? ??? ?each(points, function(p, i) { ?? ??? ??? ??? ??? ?p.graphic.attr({ ?? ??? ??? ??? ??? ??? ?translateY: -p.shapeArgs.ran ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ??? ?p.graphic.side1.attr({ ?? ??? ??? ??? ??? ??? ?translateY: -p.shapeArgs.ran ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ??? ?p.graphic.side2.attr({ ?? ??? ??? ??? ??? ??? ?translateY: -p.shapeArgs.ran ?? ??? ??? ??? ??? ?}); ?? ??? ??? ??? ?}); ?? ??? ??? ?} ?? ??? ?}, ?? ??? ?options3d: { ?? ??? ??? ?enabled: true, ?? ??? ??? ?alpha: 75, ?? ??? ?} ?? ?}, ?? ?title: { ?? ??? ?text: 'XXXXXXXXXXX' ?? ?}, ?? ?subtitle: { ?? ??? ?text: 'Highcharts 中的3D圓環(huán)圖' ?? ?}, ?? ?plotOptions: { ?? ??? ?pie: { ?? ??? ??? ?allowPointSelect: true, ?? ??? ??? ?cursor: 'pointer', ?? ??? ??? ?depth: 35, ?? ??? ??? ?innerSize: 180, ?? ??? ??? ?dataLabels: { ?? ??? ??? ??? ?enabled: false ?? ??? ??? ?} ?? ??? ?} ?? ?}, ?? ?series: [{ ?? ??? ?type: 'pie', ?? ??? ?name: 'Browser share', ?? ??? ?data: [{ ?? ??? ??? ?'name': 'Firefox', ?? ??? ??? ?y: 30.0, ?? ??? ??? ?h: 50 ?? ??? ?}, { ?? ??? ??? ?name: 'IE', ?? ??? ??? ?y: 26.8, ?? ??? ??? ?h: 15 ?? ??? ?}, { ?? ??? ??? ?name: 'Chrome', ?? ??? ??? ?y: 12.8, ?? ??? ??? ?h: 20 ?? ??? ?}, { ?? ??? ??? ?'name': 'Safari', ?? ??? ??? ?y: 8.5, ?? ??? ??? ?h: 2 ?? ??? ?}, { ?? ??? ??? ?'name': 'Opera', ?? ??? ??? ?y: 6.2, ?? ??? ??? ?h: 15 ?? ??? ?}, { ?? ??? ??? ?'name': 'Others', ?? ??? ??? ?y: 0.7, ?? ??? ??? ?h: 30 ?? ??? ?}] ?? ?}] });
<div id="container" style="height: 400px"></div>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue+element使用動態(tài)加載路由方式實現(xiàn)三級菜單頁面顯示的操作
這篇文章主要介紹了vue+element使用動態(tài)加載路由方式實現(xiàn)三級菜單頁面顯示的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08vue中el-tree結(jié)合el-switch實現(xiàn)開關(guān)狀態(tài)切換
本文主要介紹了vue中el-tree結(jié)合el-switch實現(xiàn)開關(guān)狀態(tài)切換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-12-12Vue中的數(shù)據(jù)監(jiān)聽和數(shù)據(jù)交互案例解析
這篇文章主要介紹了Vue中的數(shù)據(jù)監(jiān)聽和數(shù)據(jù)交互案例解析,在文章開頭部分先給大家介紹了vue中的數(shù)據(jù)監(jiān)聽事件$watch,具體代碼講解,大家可以參考下本文2017-07-07vue使用element ui自定義手機驗證規(guī)則問題
這篇文章主要介紹了vue使用element ui自定義手機驗證規(guī)則問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12解決vue的 v-for 循環(huán)中圖片加載路徑問題
今天小編就為大家分享一篇解決vue的 v-for 循環(huán)中圖片加載路徑問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09