vue使用Highcharts實(shí)現(xiàn)不同高度的3D環(huán)形圖
本文實(shí)例為大家分享了Highcharts實(shí)現(xiàn)不同高度的3D環(huán)形圖的具體代碼,供大家參考,具體內(nèi)容如下
要實(shí)現(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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁(yè)面顯示的操作
這篇文章主要介紹了vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁(yè)面顯示的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08詳解Vue.js在頁(yè)面加載時(shí)執(zhí)行某個(gè)方法
這篇文章主要介紹了詳解Vue.js在頁(yè)面加載時(shí)執(zhí)行某個(gè)方法的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11vue中el-tree結(jié)合el-switch實(shí)現(xiàn)開關(guān)狀態(tài)切換
本文主要介紹了vue中el-tree結(jié)合el-switch實(shí)現(xiàn)開關(guān)狀態(tài)切換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12在vue項(xiàng)目中利用popstate處理頁(yè)面返回的操作介紹
這篇文章主要介紹了在vue項(xiàng)目中利用popstate處理頁(yè)面返回的操作介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08Vue.js實(shí)現(xiàn)watch屬性的示例詳解
本文討論了watch函數(shù)是如何利用副作用函數(shù)和options進(jìn)行封裝實(shí)現(xiàn)的,也通過調(diào)度函數(shù)去控制回調(diào)函數(shù)的立即執(zhí)行和執(zhí)行時(shí)機(jī),還可以解決競(jìng)態(tài)問題,感興趣的可以了解一下2022-04-04Vue中的數(shù)據(jù)監(jiān)聽和數(shù)據(jù)交互案例解析
這篇文章主要介紹了Vue中的數(shù)據(jù)監(jiān)聽和數(shù)據(jù)交互案例解析,在文章開頭部分先給大家介紹了vue中的數(shù)據(jù)監(jiān)聽事件$watch,具體代碼講解,大家可以參考下本文2017-07-07Vue router動(dòng)態(tài)路由實(shí)現(xiàn)過程
Vue動(dòng)態(tài)路由(約定路由),聽起來好像很玄乎的樣子,但是你要是理解了實(shí)現(xiàn)思路,你會(huì)發(fā)現(xiàn)沒有想象中的那么難,下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)動(dòng)態(tài)路由添加功能的簡(jiǎn)單方法,需要的朋友可以參考下2023-03-03vue使用element ui自定義手機(jī)驗(yàn)證規(guī)則問題
這篇文章主要介紹了vue使用element ui自定義手機(jī)驗(yàn)證規(guī)則問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12解決vue的 v-for 循環(huán)中圖片加載路徑問題
今天小編就為大家分享一篇解決vue的 v-for 循環(huán)中圖片加載路徑問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09