echartGL中option各3D配置屬性配置詳解

最近,接手一個項目需要實現echart中各種3D圖表樣式,我還是一如既往的從研究echart配置項中各屬性含義開始入手,由於自己需要實現的是柱狀圖效果,類似地圖3D 效果在這裏不展示,直接進入自己所研究的內容

1、grid3D

希望上面的圖片能夠加深對grid3D各個屬性的理解,本人直接採用echarts官網中的例子http://gallery.echartsjs.com/editor.html?c=xrJ5XyZ5px進行修改,只要把下面的option對應替換即可得到相應的效果,每個屬性解釋在下面option裏面,這裏就不解釋

替換example裏面的grid3D爲下列代碼

        grid3D: {
            show:true,//是否顯示三維迪卡爾座標
            boxWidth: 100,//三維場景高度
            // boxHeight:200,//三維場景高度
            boxDepth: 80,//三維笛卡爾座標系組件在三維場景中的深度。
            axisLine:{//座標軸軸線(線)控制
                show:true,//該參數需設爲true
                // interval:200,//x,y座標軸刻度標籤的顯示間隔,在類目軸中有效。
                lineStyle:{//座標軸樣式
                    color:'red',
                    opacity:1,//(單個刻度不會受影響)
                    width:2//線條寬度
                }
            },
            axisLabel:{
                show:true,//是否顯示刻度  (刻度上的數字,或者類目)
                //   
                interval:5,//座標軸刻度標籤的顯示間隔,在類目軸中有效。
                formatter:function(v){
                    // return;
                },

                textStyle:{
                    // color:'#000',//刻度標籤樣式,見圖黑色刻度標籤
                    color: function (value, index) {
                        return value >= 6? 'green' : 'red';//根據範圍顯示顏色,主頁爲值有效
                    },
                    //  borderWidth:"",//文字的描邊寬度。
                    //  borderColor:'',//文字的描邊顏色。
                    fontSize:14,//刻度標籤字體大小
                    fontWeight:'',//粗細
                }
            },
            axisTick:{
                show:true,//是否顯示出刻度
                // interval:100,//座標軸刻度標籤的顯示間隔,在類目軸中有效
                length:5,//座標軸刻度的長度
                lineStyle:{//舉個例子,樣式太醜將就
                    color:'#000',//顏色
                    opacity:1,
                    width:5//厚度(雖然爲寬表現爲高度),對應length*(寬)
                }
            },
            splitLine:{//平面上的分隔線。
                show:true,//立體網格線  
                // interval:100,//座標軸刻度標籤的顯示間隔,在類目軸中有效
                splitArea:{
                    show:true,
                    // interval:100,//座標軸刻度標籤的顯示間隔,在類目軸中有效
                    areaStyle:{
                        color:['rgba(250,250,250,0.3)','rgba(200,200,200,0.3)','rgba(250,250,250,0.3)','rgba(200,200,200,0.3)']
                    }
                },
            },
            axisPointer:{//座標軸指示線。
                show:true,//鼠標在chart上的顯示線
                // lineStyle:{
                //     color:'#000',//顏色
                //     opacity:1,
                //     width:5//厚度(雖然爲寬表現爲高度),對應length*(寬)
                // }
            },
            //整個chart背景,可爲自定義顏色或圖片
            //         environment: 'asset/starfield.jpg'
            // // 配置爲純黑色的背景
            // environment: '#000'
            environment: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                offset: 0, color: '#00aaff' // 天空顏色
            }, {
                offset: 0.7, color: '#998866' // 地面顏色
            }, {
                offset: 1, color: '#998866' // 地面顏色
            }], false),
            viewControl: {//viewControl用於鼠標的旋轉,縮放等視角控制。(以下適合用於地球自轉等)
                // projection: 'orthographic'//默認爲透視投影'perspective',也支持設置爲正交投影'orthographic'。
                // autoRotate:true,//會有自動旋轉查看動畫出現,可查看每個維度信息
                // autoRotateDirection:'ccw',//物體自傳的方向。默認是 'cw' 也就是從上往下看是順時針方向,也可以取 'ccw',既從上往下看爲逆時針方向。
                // autoRotateSpeed:12,//物體自傳的速度
                // autoRotateAfterStill:2,//在鼠標靜止操作後恢復自動旋轉的時間間隔。在開啓 autoRotate 後有效。
                // distance:300,//默認視角距離主體的距離(常用)
                // alpha:1,//視角繞 x 軸,即上下旋轉的角度(與beta一起控制視野成像效果)
                // beta:10,//視角繞 y 軸,即左右旋轉的角度。
                // center:[]//視角中心點,旋轉也會圍繞這個中心點旋轉,默認爲[0,0,0]。
                // zlevel://組件所在的層。

                animation:true
            },
            light: {//光照相關的設置
                main: {
                    color:'#fff',//光照顏色會與所設置顏色發生混合
                    intensity:1.2,//主光源的強度(光的強度)
                    shadow: true,//主光源是否投射陰影。默認關閉。
                    // alpha:0//主光源繞 x 軸,即上下旋轉的角度。配合 beta 控制光源的方向(跟beta結合可確定太陽位置)
                    // beta:10//主光源繞 y 軸,即左右旋轉的角度。
                },
                ambient: {//全局的環境光設置。
                    intensity: 0.3,
                    color:'#fff'//影響柱條顏色
                },
                // ambientCubemap: {//會使用紋理作爲光源的環境光
                //  texture: 'pisa.hdr',
                // // 解析 hdr 時使用的曝光值
                // exposure: 1.0
                // }
            },
            // postEffect:{//後處理特效的相關配置,後處理特效可以爲畫面添加高光,景深,環境光遮蔽(SSAO),調色等效果。可以讓整個畫面更富有質感。
            //     show:true,
            //     bloom:{
            //         enable:true//高光特效,適合地球儀
            //     }
            // }
            //調整位置(常用)
            top:0,//組件的視圖離容器上側的距離
            // right:10,
            //  bottom:0,
            //組件的視圖寬度。
            // width:100,
            // height:200
        },

上面爲grid3D各個屬性及詳細解釋,效果圖如下,爲了顯示各標籤作用,圖醜勿噴^_^


xAixs3D:

(複製前請重新刷新echart demo頁面將下面代碼複製入即可看到運結果,根據需要進行參數更改)   

    xAxis3D: {
        type: 'category',//value,category,time.log
        show:false,//是否顯示 x 軸。\
        name:'x軸',//座標軸名稱
        grid3DIndex:0,//座標軸使用的 grid3D 組件的索引
        nameTextStyle:{//‘x軸’樣式設置
            color:'red'
        },
        nameGap:20,//座標軸名稱與軸線之間的距離,注意是三維空間的距離而非屏幕像素值。
        // min:-3,
        // min:0,//可以設置成特殊值 'dataMin',此時取數據在該軸上的最小值作爲最小刻度。適用於值在類目軸中,也可以設置爲類目的序數(如類目軸 data: ['類A', '類B', '類C'] 中,序數 2 表示 '類C'。也可以設置爲負數,如 -3)
        // max:100,
        //scale:'',//只在數值軸中(type: 'value')有效。是否是脫離 0 值比例。設置成 true 後坐標刻度不會強制包含零刻度。在雙數值軸的散點圖中比較有用。在設置 min 和 max 之後該配置項無效。
        data: hours,//如果設置了 type 是 'category',但沒有設置 axis.data,則 axis.data 的內容會自動從 series.data 中獲取,這會比較方便。不過注意,axis.data 指明的是 'category' 軸的取值範圍。如果不指定而是從 series.data 中獲取,那麼只能獲取到 series.data 中出現的值。比如說,假如 series.data 爲空時,就什麼也獲取不到。
       //單個類目樣式設置如下:data: [{
//     value: '週一',
//     // 突出週一
//     textStyle: {
//         fontSize: 20,
//         color: 'red'
//     }
// }, '週二', '週三', '週四', '週五', '週六', '週日']
        // minInterval:''//自動計算的座標軸最小間隔大小。type爲value
        // interval:''//類目中無效
        axisLine:{
            show:true,
            interval:2,//(此處無效?)座標軸刻度標籤的顯示間隔,在類目軸中有效。如果設置爲 1,表示『隔一個標籤顯示一個標籤』,如果值爲 2,表示隔兩個標籤顯示一個標籤,以此類推。
            lineStyle:{
                color:'red'
            },
        },
        axisLabel:{
            show:true,
            margin:15,
            interval:3,//可控制座標軸刻度標籤的顯示間隔,在類目軸中有效。
            formatter:"{value}%"//自定義x軸顯示數據標籤格式
        },
        axisTick:{},
        axisPointer:{
            // label:'',//標籤
            show:true//是否顯示座標軸指示線。
        }
        
    },

series:此處只討論series中type爲bar3D的情況


 series: [{
        //三維柱狀圖
        type: 'bar3D',
        data: data.map(function (item) {
            return {
                value: [item[1], item[0], item[2]],
            }
        }),
        bevelSize:0.5,//柱子的倒角尺寸
        bevelSmoothness:39,//柱子倒角的光滑/圓潤度,數值越大越光滑/圓潤。
        shading: 'lambert',//color,lambert,realistic
        itemStyle:{//柱條樣式
            color:'#000',
            // opacity:0.5
        },
        label: {
            show:true,//柱子的樣式,包括顏色和不透明度。
            distance:10,//標籤距離圖形的距離
            // formatter:function(value){
            //   return value;  
            // },
            textStyle: {//標籤的字體樣式。
                fontSize: 16,
                borderWidth: 1
            }
        },

        emphasis: {//柱子高亮狀態的標籤和樣式配置。
            label: {
                textStyle: {
                    fontSize: 20,
                    color: '#900'
                }
            },
            itemStyle: {
                color: '#900'
            }
        }
    }]

最後,實現一個比較常見的柱狀圖效果如下:(下面鏈接爲echart官方實例)

http://gallery.echartsjs.com/editor.html?c=xryQDPYK0b

當有兩個柱狀圖時候,同2d圖一樣,直接在series加入另外一組數據(也爲echart官網實例)

http://gallery.echartsjs.com/editor.html?c=xSJsdlo2hb

分別效果圖如下:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章