zoukankan      html  css  js  c++  java
  • Echarts GL测试案例

      初次使用了Echarts GL后,在官网上又看到了好多很炫的例子,随便测试了几个,发现在Google浏览器会报跨域的问题,后来找了好多地方,发现都不管用啊-_-||,只好先用火狐浏览器测试啦(O(∩_∩)O哈哈~)

      首先是上一次有一个多维数据的例子中,还有几个维度(列)没能表达出来,利用 ECharts 内置的 visualMap 组件我们可以继续将第四个维度编码成颜色,并把原来默认的透视投影改成了正交投影。正交投影在某些场景中可以避免因为近大远小所造成的表达错误。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <base href="<%=basePath%>" />
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>EChartGL Test</title>
    <script type="text/javascript" src="js/echarts.js"></script>
    <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="js/echarts-gl.js"></script>
    </head>
    <body>
    <div id="main" style="800px;height:600px;"></div>
    <script type="text/javascript">
    //基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'),'light');
    $.get('asset/life-expectancy-table.json', function (data) {
        myChart.setOption({
            grid3D: {
                viewControl: {
                    // 使用正交投影。
                    projection: 'orthographic'
                }
            },
            xAxis3D: {
                // 因为 x 轴和 y 轴都是类目数据,所以需要设置 type: 'category' 保证正确显示数据。
                type: 'category'
            },
            yAxis3D: {
                type: 'log'
            },
            zAxis3D: {},
            visualMap: {
                calculable: true,
                max: 100,
                // 维度的名字默认就是表头的属性名
                dimension: 'Life Expectancy',
                inRange: {
                    color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
                }
            },
            dataset: {
                source: data
            },
            series: [
                {
                    type: 'scatter3D',
                    symbolSize: 5,
                    encode: {
                        // 维度的名字默认就是表头的属性名
                        x: 'Country',
                        y: 'Population',
                        z: 'Income',
                        tooltip: [0, 1, 2, 3, 4]
                    }
                }
            ]
        })
    });
    </script>
    
    </body>
    </html>

      实现的效果图为:

      下面是一个3D线的例子:

    <!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Airline - ECHARTS-GL</title>
            <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
            <meta name="apple-mobile-web-app-capable" content="yes"> <!-- Fullscreen Landscape on iOS -->
            <link rel="stylesheet" href="./common.css">
        </head>
        <body>
            <div id="main"></div>
            <script src="../node_modules/echarts/dist/echarts.js"></script>
            <script src="../node_modules/echarts/map/js/world.js"></script>
            <script src="../node_modules/echarts/theme/dark.js"></script>
            <script src="../dist/echarts-gl.js"></script>
            <script src="lib/jquery.min.js"></script>
            <script src="js/commonUI.js"></script>
            <script>
                var chart = echarts.init(document.getElementById('main'));
    
                $.getJSON('data/flights.json', function (data) {
                    function getAirportCoord(idx) {
                        return [data.airports[idx][3], data.airports[idx][4]];
                    }
                    var routes = data.routes.map(function (airline) {
                        return [
                            getAirportCoord(airline[1]),
                            getAirportCoord(airline[2])
                        ];
                    });
    
                    chart.setOption({
                        geo3D: {
                            map: 'world',
                            shading: 'realistic',
    
                            environment: '#111',
    
                            realisticMaterial: {
                                roughness: 0.8,
                                metalness: 0
                            },
                            postEffect: {
                                enable: true
                            },
                            groundPlane: {
                                show: true,
                                color: '#555'
                            },
                            light: {
                                main: {
                                    intensity: 0,
                                    shadow: true,
                                    shadowQuality: 'high',
                                    alpha: 30
                                },
                                ambient: {
                                    intensity: 0
                                },
                                ambientCubemap: {
                                    texture: 'asset/canyon.hdr',
                                    exposure: 1,
                                    diffuseIntensity: 0.5,
                                    specularIntensity: 0
                                }
                            },
                            viewControl: {
                                distance: 50
                            },
    
                            itemStyle: {
                                color: '#111'
                            },
    
                            regionHeight: 0.5
                        },
                        series: [{
                            type: 'lines3D',
    
                            coordinateSystem: 'geo3D',
    
                            effect: {
                                show: true,
                                trailWidth: 1,
                                trailLength: 0.4
                            },
    
                            blendMode: 'lighter',
    
                            lineStyle: {
                                 0,
                                color: 'rgb(50, 50, 150)',
                                opacity: 0.1
                            },
    
                            data: routes
                        }]
                    });
    
                    window.onresize = chart.resize;
    
                    window.addEventListener('keydown', function () {
                        chart.dispatchAction({
                            type: 'lines3DToggleEffect',
                            seriesIndex: 0
                        });
                    });
                });
            </script>
        </body>
    </html>

      效果图为:

      其中JSON数据:https://pan.baidu.com/s/10FEAFAUdxvaEC24kLYjrjA

      一个透明Bar3D的例子:

    <!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Grid3D - ECHARTS-GL</title>
            <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
            <meta name="apple-mobile-web-app-capable" content="yes"> <!-- Fullscreen Landscape on iOS -->
            <link rel="stylesheet" href="./common.css">
        </head>
        <body>
            <div id="main"></div>
            <script src="../node_modules/echarts/dist/echarts.js"></script>
            <script src="../dist/echarts-gl.js"></script>
            <script src="lib/jquery.min.js"></script>
            <script src="js/commonUI.js"></script>
            <script>
                var chart = echarts.init(document.getElementById('main'));
    
                var hours = ['12a', '1a', '2a', '3a', '4a', '5a', '6a',
                        '7a', '8a', '9a','10a','11a',
                        '12p', '1p', '2p', '3p', '4p', '5p',
                        '6p', '7p', '8p', '9p', '10p', '11p'];
                var days = ['Saturday', 'Friday', 'Thursday',
                        'Wednesday', 'Tuesday', 'Monday', 'Sunday'];
    
                var data = [[0,0,5],[0,1,1],[0,2,0],[0,3,0],[0,4,0],[0,5,0],[0,6,0],[0,7,0],[0,8,0],[0,9,0],[0,10,0],[0,11,2],[0,12,4],[0,13,1],[0,14,1],[0,15,3],[0,16,4],[0,17,6],[0,18,4],[0,19,4],[0,20,3],[0,21,3],[0,22,2],[0,23,5],[1,0,7],[1,1,0],[1,2,0],[1,3,0],[1,4,0],[1,5,0],[1,6,0],[1,7,0],[1,8,0],[1,9,0],[1,10,5],[1,11,2],[1,12,2],[1,13,6],[1,14,9],[1,15,11],[1,16,6],[1,17,7],[1,18,8],[1,19,12],[1,20,5],[1,21,5],[1,22,7],[1,23,2],[2,0,1],[2,1,1],[2,2,0],[2,3,0],[2,4,0],[2,5,0],[2,6,0],[2,7,0],[2,8,0],[2,9,0],[2,10,3],[2,11,2],[2,12,1],[2,13,9],[2,14,8],[2,15,10],[2,16,6],[2,17,5],[2,18,5],[2,19,5],[2,20,7],[2,21,4],[2,22,2],[2,23,4],[3,0,7],[3,1,3],[3,2,0],[3,3,0],[3,4,0],[3,5,0],[3,6,0],[3,7,0],[3,8,1],[3,9,0],[3,10,5],[3,11,4],[3,12,7],[3,13,14],[3,14,13],[3,15,12],[3,16,9],[3,17,5],[3,18,5],[3,19,10],[3,20,6],[3,21,4],[3,22,4],[3,23,1],[4,0,1],[4,1,3],[4,2,0],[4,3,0],[4,4,0],[4,5,1],[4,6,0],[4,7,0],[4,8,0],[4,9,2],[4,10,4],[4,11,4],[4,12,2],[4,13,4],[4,14,4],[4,15,14],[4,16,12],[4,17,1],[4,18,8],[4,19,5],[4,20,3],[4,21,7],[4,22,3],[4,23,0],[5,0,2],[5,1,1],[5,2,0],[5,3,3],[5,4,0],[5,5,0],[5,6,0],[5,7,0],[5,8,2],[5,9,0],[5,10,4],[5,11,1],[5,12,5],[5,13,10],[5,14,5],[5,15,7],[5,16,11],[5,17,6],[5,18,0],[5,19,5],[5,20,3],[5,21,4],[5,22,2],[5,23,0],[6,0,1],[6,1,0],[6,2,0],[6,3,0],[6,4,0],[6,5,0],[6,6,0],[6,7,0],[6,8,0],[6,9,0],[6,10,1],[6,11,0],[6,12,2],[6,13,1],[6,14,3],[6,15,4],[6,16,0],[6,17,0],[6,18,0],[6,19,0],[6,20,1],[6,21,2],[6,22,2],[6,23,6]];
    
                chart.setOption({
                    backgroundColor: '#fff',
                    visualMap: {
                        max: 20,
                        color: ['#d94e5d','#eac736','#50a3ba']
                    },
                    xAxis3D: {
                        type: 'category',
                        data: hours,
                        axisLabel: {
                            interval: 2
                        },
                        axisPointer: {
                            lineStyle: {
                                color: '#900'
                            }
                        }
                    },
                    yAxis3D: {
                        type: 'category',
                        data: days,
                        axisPointer: {
                            lineStyle: {
                                color: '#090'
                            }
                        }
                    },
                    zAxis3D: {
                        type: 'value',
                        axisPointer: {
                            lineStyle: {
                                color: '#009'
                            }
                        }
                    },
                    grid3D: {
                        boxWidth: 200,
                        boxDepth: 80,
                        viewControl: {
                            // projection: 'orthographic'
                        },
                        light: {
                            main: {
                                shadow: true
                            },
                            ambient: {
                                intensity: 0.8
                            }
                        }
                    },
                    series: [{
                        type: 'bar3D',
                        data: data.map(function (item) {
                            return {
                                value: [item[1], item[0], item[2]],
                                label: {
                                    show: item[2] != 0
                                }
                            }
                        }),
                        shading: 'lambert',
    
                        label: {
                            normal: {
                                textStyle: {
                                    fontSize: 16,
                                    borderWidth: 1,
                                    opacity: 0.4
                                }
                            },
                            emphasis: {
                                textStyle: {
                                    fontSize: 20,
                                    color: '#900',
                                    opacity: 0.6
                                }
                            }
                        },
    
                        itemStyle: {
                            normal: {
                                opacity: 0.2
                            },
                            emphasis: {
                                color: '#900',
                                opacity: 0.4
                            }
                        }
                    }]
                });
    
                window.addEventListener('resize', function () {
                    chart.resize();
                });
    
            </script>
        </body>
    </html>

      效果图为:

  • 相关阅读:
    第二次作业
    大学——新生活方式
    第四次作业
    第三次作业
    第二次作业——起航
    梦开始的地方
    第四次作业
    第三次作业
    第二次作业
    博客作业 随笔
  • 原文地址:https://www.cnblogs.com/wsyblog/p/8620422.html
Copyright © 2011-2022 走看看