工作中遇到了这样的问题,需要绘制3D金字塔,如图所示:

echarts可以做平面的金字塔和漏斗图,但是3D金字塔在官网上并没有看到相关案例。查了相关资料,用象形柱状图来实现,具体代码如下所示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="box" style="width: 500px;height: 400px;background: #000000;"></div>
        <script src="js/echarts.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            funnelFn();

function funnelFn() {

var loadingFunnel = {
                    title: '',
                    arrDataX: [],
                    arrDataY: [],
                }
                //title标示文字,标示线
                loadingFunnel.title = (text, top, left, color, fontStyle, fontFamily, fontSize) => {
                    return {
                        text: text,
                        top: top,
                        left: left,
                        textStyle: {
                            color: color,
                            fontStyle: fontStyle,
                            fontFamily: fontFamily,
                            fontSize: fontSize,

}
                    }
                };
                loadingFunnel.arrDataX = ['茶叶', '青椒', '大蒜'];
                loadingFunnel.arrDataY = [123, 254, 325];

// loadingFunnel.arrData = [20, 40, 60];
             var myChart = echarts.init(document.getElementById("box"));
                option = {
                    title: [
                        loadingFunnel.title(loadingFunnel.arrDataX[0], '17%',
                            '62%', '#12e7e8', 'normal', 'sans-serif', '16'),
                        loadingFunnel.title(loadingFunnel.arrDataY[0], '22%', '62%', '#ffffff', 'normal', 'sans-serif',
                            '16'),

loadingFunnel.title(loadingFunnel.arrDataX[1], '38%',
                            '62%', '#4dc6ff', 'normal', 'sans-serif', '16'),
                        loadingFunnel.title(loadingFunnel.arrDataY[1], '43%', '62%', '#ffffff', 'normal', 'sans-serif',
                            '16'),

loadingFunnel.title(loadingFunnel.arrDataX[2], '55%',
                            '62%', '#eaad38', 'normal', 'sans-serif', '16'),
                        loadingFunnel.title(loadingFunnel.arrDataY[2], '61%', '62%', '#ffffff', 'normal', 'sans-serif',
                            '16'),
                    ],
                    tooltip: {
                        show: true,
                        formatter: function(params) {
                            console.log(params)
                            return params.marker + params.name + ':' + params.data.number + '万'
                        }
                    },
                    grid: {
                        // containLabel: true,
                        left: '10%',
                        top: "19%",
                        bottom: "0%",
                    },
                    xAxis: {
                        show: false,
                        data: [
                            '',
                            '',
                            '',
                            ''
                        ],
                        axisTick: {
                            show: false
                        },
                        axisLabel: {
                            color: '#5EA2ED',
                            interval: 0
                        },
                        axisLine: {
                            lineStyle: {
                                color: '#1B5BBA',
                            }
                        }
                    },
                    yAxis: {
                        show: false,
                        splitLine: {
                            show: false
                        },
                        axisLine: {
                            lineStyle: {
                                color: '#1B5BBA',
                            }
                        },
                        axisLabel: {
                            color: '#5EA2ED',
                            interval: 0
                        },
                    },
                    series: [{
                        type: 'pictorialBar',
                        //  labelLine:{
                        //      show:true,
                        //      length2:20,
                        //       lineStyle:{
                        //           color:'red',
                        //           width:5
                        //       }

//  },
                        //  label: {
                        //          show: true,
                        //          position: 'right',
                        //          formatter: '{b}{c} 万头',
                        //          fontSize: 16,
                  //          color: '#e54035',
                        //          verticalAlign:'top'
                        // },
                        data: [{
                            name: loadingFunnel.arrDataX[0],
                            // z: 100,
                            value: 20,
                            number: loadingFunnel.arrDataY[0],
                            symbolSize: ['130%', '90%'],
                            symbolPosition: 'center',
                            symbolOffset: ['60%', '-250%'],
                            symbol: 'image://Funnel1.png',
                        }, {
                            name: loadingFunnel.arrDataX[1],
                            // z: 90,
                            value: 40,
                            number: loadingFunnel.arrDataY[1],
                            symbolSize: ['200%', '40%'],
                            symbolPosition: 'center',
                            symbolOffset: ['-22%', '-130%'],
                            symbol: 'image://Funnel2.png',
                        }, {
                            name: loadingFunnel.arrDataX[2],
                            // z: 80,
                            value: 60,
                            number: loadingFunnel.arrDataY[2],
                            symbolSize: ['280%', '35%'],
                            symbolPosition: 'center',
                            symbolOffset: ['-60%', '10%'],
                            symbol: 'image://Funnel3.png',
                        }, ]
                    }]
             };
                myChart.setOption(option);
            }
        </script>
    </body>
</html>

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><div id="box" style="width: 500px;height: 400px;background: #000000;"></div><script src="js/echarts.min.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">funnelFn();function funnelFn() {var loadingFunnel = {title: '',arrDataX: [],arrDataY: [],}//title标示文字,标示线loadingFunnel.title = (text, top, left, color, fontStyle, fontFamily, fontSize) => {return {text: text,top: top,left: left,textStyle: {color: color,fontStyle: fontStyle,fontFamily: fontFamily,fontSize: fontSize,}}};loadingFunnel.arrDataX = ['茶叶', '青椒', '大蒜'];loadingFunnel.arrDataY = [123, 254, 325];// loadingFunnel.arrData = [20, 40, 60];var myChart = echarts.init(document.getElementById("box"));option = {title: [loadingFunnel.title(loadingFunnel.arrDataX[0], '17%','62%', '#12e7e8', 'normal', 'sans-serif', '16'),loadingFunnel.title(loadingFunnel.arrDataY[0], '22%', '62%', '#ffffff', 'normal', 'sans-serif','16'),loadingFunnel.title(loadingFunnel.arrDataX[1], '38%','62%', '#4dc6ff', 'normal', 'sans-serif', '16'),loadingFunnel.title(loadingFunnel.arrDataY[1], '43%', '62%', '#ffffff', 'normal', 'sans-serif','16'),loadingFunnel.title(loadingFunnel.arrDataX[2], '55%','62%', '#eaad38', 'normal', 'sans-serif', '16'),loadingFunnel.title(loadingFunnel.arrDataY[2], '61%', '62%', '#ffffff', 'normal', 'sans-serif','16'),],tooltip: {show: true,formatter: function(params) {console.log(params)return params.marker + params.name + ':' + params.data.number + '万'}},grid: {// containLabel: true,left: '10%',top: "19%",bottom: "0%",},xAxis: {show: false,data: ['','','',''],axisTick: {show: false},axisLabel: {color: '#5EA2ED',interval: 0},axisLine: {lineStyle: {color: '#1B5BBA',}}},yAxis: {show: false,splitLine: {show: false},axisLine: {lineStyle: {color: '#1B5BBA',}},axisLabel: {color: '#5EA2ED',interval: 0},},series: [{type: 'pictorialBar',//  labelLine:{//    show:true,//    length2:20,//    lineStyle:{//           color:'red',//        width:5//       }//  },//  label: {//          show: true,//          position: 'right',//          formatter: '{b}{c} 万头',//          fontSize: 16,//          color: '#e54035',//          verticalAlign:'top'// },data: [{name: loadingFunnel.arrDataX[0],// z: 100,value: 20,number: loadingFunnel.arrDataY[0],symbolSize: ['130%', '90%'],symbolPosition: 'center',symbolOffset: ['60%', '-250%'],symbol: 'image://Funnel1.png',}, {name: loadingFunnel.arrDataX[1],// z: 90,value: 40,number: loadingFunnel.arrDataY[1],symbolSize: ['200%', '40%'],symbolPosition: 'center',symbolOffset: ['-22%', '-130%'],symbol: 'image://Funnel2.png',}, {name: loadingFunnel.arrDataX[2],// z: 80,value: 60,number: loadingFunnel.arrDataY[2],symbolSize: ['280%', '35%'],symbolPosition: 'center',symbolOffset: ['-60%', '10%'],symbol: 'image://Funnel3.png',}, ]}]};myChart.setOption(option);}</script></body>
</html>

运行结果如图所示:

注意:图片是自己的,三层金字塔,每一层切一张图出来。

这是我找到的做法,如果各位大佬们有更好的写法,欢迎留言评论哦~

echarts制作3D锥形金字塔相关推荐

  1. html5基于Echarts制作3D炫酷世界地图地球制作,地图勾起动画,非常炫酷。

    ❉ html5基于echarts.js制作3D炫酷世界地图地球仪动画 `html5基于echarts.js制作3D炫酷世界地图地球仪动画,业务迁移热点显示动画,地图勾起动画,非常炫酷.ps:涉及跨域, ...

  2. echarts怎么实现立体柱状图_在vue项目中使用echarts制作3d柱状图

    在上一篇文章我们讲到构建项目,这篇文章,我们就来讲解一下,在vue项目中使用echarts制作3d柱状图. 还请看我娓娓写来. 1.第一步当然还是进入你所在项目的文件夹. 2.第二步使用npm安装你所 ...

  3. echarts制作图表同时有3d柱状图与折线图

    echarts制作图表同时有3d柱状图与折线图 工作遇到,小可爱们可直接抄作业,使用的pictorialBar 工作遇到,小可爱们可直接抄作业,使用的pictorialBar echarts封装,使用 ...

  4. Echart+Vue制作3d柱状图

    Echart+Vue制作3d柱状图 先看一下效果图: 我是根据Echart官网上的实例稍加改变的:Echarts官网实例地址 下面直接上代码: HTML部分: <span class=" ...

  5. matlab传递闭包动态聚类图,用SPSS制作3D散点图全方位动态展示K均值聚类效果

    SPSS系统聚类输出的树状图广受用户喜爱,二阶聚类也可以输出一系列美观的可视化图形用来观察聚类效果,但我们发现Kmeans均值聚类没有提供可视化程度高的图形,那怎么办,我们自己来制作. 数据小兵推荐使 ...

  6. php扇形分布图,PHP制作3D扇形统计图以及对图片进行缩放操作实例

    这篇文章主要介绍了PHP制作3D扇形统计图以及对图片进行缩放操作实例,需要的朋友可以参考下 1.利用php gd库的函数绘制3D扇形统计图 header("content-type" ...

  7. iOS 10 SceneKit 新特性 – SceneKit 制作 3D 场景框架

    来源:scauos(@大朕东) 链接:http://www.jianshu.com/p/b30785bb6c97 开头语: 今天的主题是探索iOS10 SceneKit的新功能,你可以观看今年WWDC ...

  8. ai如何旋转画布_「AI教程」使用AI制作3D立体文字效果

    今天macdown小编要通过AI制作一种3D立体字体,主要的知识点是混合工具的使用.Shift键.Alt键的灵活运用.3D旋转命令.投影效果的创建等,学会后可以应用在需要的设计中,比如海报设计,log ...

  9. 网页特效:用CSS3制作3D图片立方体旋转特效

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. php 3d animation,如何用HTML5的Canvas制作3D动画效果

    HTML5的诞生给web前端界带来了不小轰动,像什么动画旋转.图片滑块.图片轮播等等这些3D特效,也引发了不少朋友想要学习HTML5的好奇心.最近我一直在做canvas动画效果,发现canvas这个东 ...

最新文章

  1. 基于图像的三维模型重建——稠密点云重建
  2. OpenCASCADE:STEP翻译器的介绍
  3. es嵌套聚合dsl(求均值,求和)
  4. exposed beyond app through Intent.getData(),或FileUriExposedException
  5. Python 37 进程池与线程池 、 协程
  6. 低格硬盘用什么软件_迟来的评测:用了三年后的固态硬盘会变成什么样呢?
  7. 【CAS】Implementing generic double-word compare and swap for x86/x86-64
  8. 路由 RIP 协议 和 滞空路由
  9. phpstorm 新建拉取项目_Flink1.8实时数仓项目实战
  10. Linux总结篇 linux命令 虚拟机 - (二)
  11. 银河麒麟服务器无raid驱动安装处理
  12. linux分辨率变低了,解决 ubuntu 装N卡驱动后开机分辨率变低 转
  13. Linux沙箱技术介绍
  14. 当了两天向导,带他进行了上海都市游885
  15. I.MX6 Linux mipi配置数据合成
  16. java爬虫抓取极客时间专栏页面
  17. Android BroadcastReceiver
  18. SpringGateway 网关
  19. 鸿蒙智慧屏pro,鸿蒙OS带来了什么?荣耀智慧屏PRO现场轻体验
  20. 2017考研计算机真题错题本

热门文章

  1. VBA编程_常用函数总结1
  2. 博弈论 | 演化博弈理论(Evolutionary Game Theory)的理解
  3. 犀牛Rhino教程合集37部
  4. 基于uniapp开发DiscuzQ社区的ios和安卓、小程序H5源码
  5. tomcat设置编码格式utf8
  6. linux执行perl脚本,如何从Perl脚本中运行Perl脚本?
  7. 关于XP系统远程桌面的一点点记录
  8. 1.2 说说大学这滩泥淖——《逆袭大学》连载
  9. python闯红灯检测斑马线检测红绿灯检测车速检测车流量统计车牌识别智慧交通系统
  10. Qt实现音视频播放器