广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue使用Highcharts实现不同高度的3D环形图
  • 795
分享到

vue使用Highcharts实现不同高度的3D环形图

2024-04-02 19:04:59 795人浏览 独家记忆
摘要

本文实例为大家分享了Highcharts实现不同高度的3D环形图的具体代码,供大家参考,具体内容如下 要实现的效果: 完整代码如下: // 修改3d饼图绘制过程 var each

本文实例为大家分享了Highcharts实现不同高度的3D环形图的具体代码,供大家参考,具体内容如下

要实现的效果:

完整代码如下:

// 修改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圆环图'
    },
    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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue使用Highcharts实现不同高度的3D环形图

本文链接: https://www.lsjlt.com/news/144071.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue使用Highcharts实现不同高度的3D环形图
    本文实例为大家分享了Highcharts实现不同高度的3D环形图的具体代码,供大家参考,具体内容如下 要实现的效果: 完整代码如下: // 修改3d饼图绘制过程 var each ...
    99+
    2022-11-13
  • vue中怎么使用echarts和echarts-gl实现3D饼图环形饼图
    今天小编给大家分享一下vue中怎么使用echarts和echarts-gl实现3D饼图环形饼图的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作