echart 3D柱状图

3d柱状图展示数据,下图1为初始加载,可拖动转换方向,如图2

在官方例子上去掉了坐标轴、网格线、指示线

 

 

首先看一下官网的例子

我们所需要做的就是,去掉多余的线,以y轴为例

 yAxis3D: {
	                name: 'y',
					show: false,
					axisLine: {
						show: true,   //直接设置不可见会有bug
						lineStyle: {
							color: 'rgba(0,0,0,0)'   //我将y轴设置为透明
						}
					},
					splitLine:{show: false},
	                type: 'category',
	                data: days
	            },

 

完整代码,开头记得引入所需要的包

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>投票统计</title>
		<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
		<script src="echarts.min.js" type="text/javascript"></script>
		<script src="echarts-gl.js"></script>
		<style type="text/css">
				#biao{
					width: 60vw;
					height: 60vh;
				}
				body,html{
					width: 100vw;
					height: 100vh;
					margin: 0;
				}
				#main{
					width: 100vw;
					height: 100vh;
					display: flex;
					flex-direction: row;
					justify-content: center;
					align-items: center;
				}
		</style>
	</head>
	<body>
		<div id="main">
			<div id="biao"></div>
		</div>
	</body>
	<script type="text/javascript">
	        // 基于准备好的dom,初始化echarts实例
	        var myChart = echarts.init(document.getElementById('main'));
	        var xData = ['', '', '', '', '']; //x轴数据
	        var days = ['']; //z轴数据
	        var data = [
	            [0, 0, 0],
	            [0, 1, 0],
	            [0, 2, 0],
	            [0, 3, 0],
	            [0, 4, 0],
	        ];              //y轴数据
	        var option = {
	            tooltip: {
					show:false,
					 trigger: 'axis',
					 axisPointer: {            // 坐标轴指示器,坐标轴触发有效
						 type: 'shadow'        // 默认为直线,可选为:'line' |                 
                         'shadow'
					 }
				},
	            visualMap: {
	                show: false,
	                max: 15,
	                inRange: {
	                    color: ['#f9ef4d']
	                }
	            },
	            xAxis3D: {
	                name: 'x',
					show: false,
					axisLine: {
						show: true,
						lineStyle: {
							color: 'rgba(0,0,0,0)'
						}
					},
					axisTick:{       //刻度线
					  show:false
					},
					axisLabel: {
						textStyle: {
							color: '#f9ef4d',
							fontSize: 30
						},
						interval: 0,  
						//x轴文字换行
						formatter: function(params) {
							var newParamsName = ""; // 最终拼接成的字符串
							var paramsNameNumber = params.length; // 实际标签的个数
							var provideNumber = 6; // 每行能显示的字的个数
							var rowNumber = Math.ceil(paramsNameNumber / provideNumber); // 换行的话,需要显示几行,向上取整
							if (paramsNameNumber > provideNumber) {
								for (var p = 0; p < rowNumber; p++) {
									var tempStr = ""; // 表示每一次截取的字符串
									var start = p * provideNumber; // 开始截取的位置
									var end = start + provideNumber; // 结束截取的位置
									if (p == rowNumber - 1) {
										tempStr = params.substring(start, paramsNameNumber);
									} else {
										tempStr = params.substring(start, end) + "\n";
									}
									newParamsName += tempStr; // 最终拼成的字符串
								}
							} else {
								// 将旧标签的值赋给新标签
								newParamsName = params;
							}
							//将最终的字符串返回
							return newParamsName
						}
					},
					splitLine:{show: false},
	                nameGap: 1,
	                type: 'category',
	                data: xData
	            },
	            yAxis3D: {
	                name: 'y',
					show: false,
					axisLine: {
						show: true,
						lineStyle: {
							color: 'rgba(0,0,0,0)' //直接设置不显示出现bug,我就设置为透明
						}
					},
					splitLine:{show: false},
	                type: 'category',
	                data: days
	            },
	            zAxis3D: {
	                name: '',
	
					axisLine: {
						show: true,
						lineStyle: {
							color: 'rgba(0,0,0,0)'
						}
					},
					splitLine:{show: false},
	                type: 'value'
	            },
	            grid3D: {
					axisPointer:{
						show:false
					},
	                boxWidth: 200,
	                boxDepth: 20,
	                light: {
	                    main: {
	                        intensity: 1.2,
	                        shadow: true
	                    },
	                    ambient: {
	                        intensity: 0.3
	                    }
	                },
	                viewControl: {
	                    alpha: 0,
	                    beta: 0,
	                }
	            },
	            series: [{
	                type: 'bar3D',
					name:'投票数',
	                data: data.map(function(item) {
	                    return {
	                        value: [item[1], item[0], item[2]],
	                    }
	                }),
					label: {
						show: true,
						position: 'top',
						textStyle: { //数值样式
							color: '#FFE66F',
							fontSize: 42,
							backgroundColor:'rgba(0,0,0,0)'
						}
					},
	                shading: 'lambert',
					//鼠标经过
	                emphasis: {
	                    label: {
	                        textStyle: {
	                            fontSize: 50,
	                        }
	                    },
	                },
					
	            }]
	        }
			window.onresize = function(){
				myChart.resize();
			}
	        // 使用刚指定的配置项和数据显示图表。
	        myChart.setOption(option); 
            //后台获取数据
			function main(){
				$.ajax({
				   url: '',
				   type: 'post',
				   data:JSON.stringify({}),
				   dataType:'json',
				   contentType: 'application/json',
				   async:true,
				   success:function(data){
						var data1=[]
						var data2=[]
						for(var i=0;i<data.list.length;i++){
						   data1[i]=[0,i,data.list[i].headCount]
						   data2[i]=data.list[i].name
						}
						myChart.setOption({
							xAxis3D: {
								data: data2
							},
							series: [{
								// 根据名字对应到相应的系列
								name: '投票数',
								data: data1.map(function(item) {
									return {
										value: [item[1], item[0], item[2]],
									}
								}),
							}]
						});
				   }
				   
				});
			
			}
			main()
			
	    </script>

</html>

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值