数据可视化——实验4 地理数据可视化

代码原文

<!DOCTYPE html>
<html>
    <head>
        <meta charset = "utf-8"/>
        <title>实验4</title>
        <script src = "echarts.js"></script>
        <script src="https://d3js.org/d3.v4.min.js"></script>
        <!--jquery是一种数据存放的形式,引入该数据库-->
        <script src = "https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js"></script>
    </head>
    <body>
        <div id="main" style="width:800px;height:600px;"></div> 
        <div id = 'demo' style = "width:800px;height:800px;"></div> 
        <script type = "text/javascript">

            var myChart_1 = echarts.init(document.getElementById('main'));//创建时间轴地图
            var myChart_2 = echarts.init(document.getElementById('demo'));//创建累计到4月1日确诊的病例
            var option_1 = {
                baseOption:{    //时间轴参数基本设置
                    backgroundColor: '#fff',
                    title:[
                        {//时间轴标题
                            textAlign: 'center',    //整体的水平对齐方式
                            left: '22%',
                            top: '80%',
                            textStyle:{
                                fontSize:40,
                            //    color:'rgba(255,255,255,0.7)'
                            }
                        },
                        {//图表标题
                            text: '疫情地图',
                            subtext: '2020年1月24日-4月18日统计结果',
                            left: '25%',
                            top: '3%',
                            textStyle:{
                                fontSize: 50,
                            //    color: 'rgba(255,255,255,0.7)',
                            }
                        }
                    ],
                    tooltip:{},
                    toolbox:{   //工具栏
                        show: true,
                        orient: 'horizontal',
                        left: 'left',
                        top: 'top',
                        feature: {
                            dataView : {readOnly: false},
                            restore: {},    //重新开始播放
                            saveAsImage: {} //以图片形式保存
                        }
                    },
                    visualMap:{  //视觉映射
                        orient: 'vertical',
                        left: '4%',
                        bottom: '25%',
                        pieces: [ //分段映射颜色
                            {gt:10000},
                            {gt:5000,lte:10000},
                            {gt:1500,lte:5000},
                            {gt:900,lte:1500},
                            {gt:500,lte:1000},
                            {gt:200,lte:500},
                            {gt:50,lte:200},
                            {lte:50}
                        ],  
                            color:[ //与片段一一对映
                                '#404350',
                                '#d73027',
                                '#fdae61',
                                '#313695',
                                '#74add1',
                                '#a1d99b',
                                '#ffffbf',
                                '#e0f3f8'
                            ],
                        align: 'right', //色块位置
                        textStyle: {color: '#666'},
                    },
                    timeline:{  //时间线
                        axisType: 'category',   
                        show: true,
                        orient: 'horizontal',
                        autoPlay: true,
                        inverse:false, //是否反向放置
                        playInterval: 500,  //播放速度
                        left: 'center',
                        top: '90%',
                        width: '80%',
                        label:{
                            normal: {
                                textStyle:{
                                    color: '#999'
                                }
                            },
                            emphasis:{
                                textStyle:{color: '#fff'}
                            }
                        },
                        symbol: 'none', //时间线上代表点样式
                        controlStyle:{      //控制元件样式
                            showNextBtn: false,
                            showPrevBtn: false,
                            normal:{
                                color: '#666',
                                borderColor: '#666'
                            },
                            emphasis:{
                                color: '#fff',
                                borderColor: '#fff'
                            }
                        },
                        data:[],    //时间点数据集

                    },
                },
                options:[]  //对应时间点的可变参数
            };
            

            d3.csv("CityData.csv",function(error,csvdata){  //读取csv文件
                if(error){
                    console.log(error);
                }else{  //读取成功时
                    var date = csvdata[0].updateTime;   //时间信息
                    var province = csvdata[0].provinceName; //省份
                    var confirm = 0;    //确诊人数
                    var oneDayData = [];    //一天中全国各省的确诊人数
                    var Day = [];   //时间信息集
                    var data = [];  //1/24-4/18时间段内每天各省确诊人数数据集
                    var sum = [  //统计4月1日前各省累积确诊人数
                        {name: '北京市',value: 0 },{name: '天津市',value: 0 },  
                        {name: '上海市',value: 0 },{name: '重庆市',value: 0 },  
                        {name: '河北省',value: 0 },{name: '河南省',value: 0 },  
                        {name: '云南省',value: 0 },{name: '辽宁省',value: 0 },  
                        {name: '黑龙江省',value: 0 },{name: '湖南省',value: 0 },  
                        {name: '安徽省',value: 0 },{name: '山东省',value: 0 },  
                        {name: '新疆省',value: 0 },{name: '江苏省',value: 0 },  
                        {name: '浙江省',value: 0 },{name: '江西省',value: 0 },  
                        {name: '湖北省',value: 0 },{name: '广西省',value: 0 },  
                        {name: '甘肃省',value: 0 },{name: '山西省',value: 0 },  
                        {name: '内蒙古自治区',value: 0},{name: '陕西省',value: 0 },  
                        {name: '吉林省',value: 0 },{name: '福建省',value: 0 },  
                        {name: '贵州省',value: 0 },{name: '广东省',value: 0 },  
                        {name: '青海省',value: 0 },{name: '西藏自治区',value: 0 },  
                        {name: '四川省',value: 0 },{name: '宁夏回族自治区',value: 0 },  
                        {name: '海南省',value: 0 },{name: '台湾省',value: 0 },  
                        {name: '香港',value: 0 },{name: '澳门',value: 0 }  
                    ];
                    for(var i=0; i<csvdata.length; i++){    //遍历读入的文件数据
                        if(date == csvdata[i].updateTime){  //统计各省每天确诊总人数
                            if(province == csvdata[i].provinceName){    //若当天该省信息已存在,则只进行累加
                                confirm += parseInt(csvdata[i].city_confirmedCount);
                            }else{  //当天该省信息不存在,更新oneDayData及判断条件
                                oneDayData.push({'name':province,'value':confirm});
                                province = csvdata[i].provinceName;
                                confirm = parseInt(csvdata[i].city_confirmedCount);
                            }
                        }else{  //日期改变,则更新Day[]和判断条件
                            Day.push(date);
                            oneDayData.push({'name':province,'value':confirm});
                            data.push(oneDayData);
                            oneDayData = [];
                                date = csvdata[i].updateTime;
                                province = csvdata[i].provinceName;
                                confirm = parseInt(csvdata[i].city_confirmedCount);
                        }
                    }
                    //存放最后一天累加的各省确诊人数
                    Day.push(date);
                    oneDayData.push({'name':province,'value':confirm});
                    data.push(oneDayData);
                    for(var i=Day.length-1; i>=0; i--){ //统计4月1日前各省累计确诊人数
                        if(Day[i]=="2020/4/1"){
                            break;
                        }
                        for(var j=0; j<data[i].length;j++){
                            for(var r=0; r<sum.length; r++){
                                if( sum[r].name == data[i][j].name){
                                    sum[r].value += data[i][j].value;
                                    break;
                                }
                            }
                        }
                    }
                    console.log(sum);
                    console.log(data);
                    console.log(Day);
                //绘制地图
                    var ROOT_PATH = 'https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json';
                    //使用http get请求到地图信息并取回结果
                    $.get(ROOT_PATH,function(chinaJson){
                        echarts.registerMap('China',chinaJson); //注册地图
                        var option_2 = {    //统计图2的配置信息
                            title:{
                                text: '截至4月1日累计确诊人数统计',
                                left: 'center',
                                top: '3%',
                                textStyle:{
                                    fontSize: 40,
                                }
                            },
                            tooltip:{},
                            visualMap:{
                                orient: 'vertical',
                                left: '4%',
                                bottom: '25%',
                                pieces: [ 
                                    {gt:50000},
                                    {gt:30000,lte:50000},
                                    {gt:20000,lte:30000},
                                    {gt:10000,lte:20000},
                                    {gt:5000,lte:10000},
                                    {gt:1000,lte:5000},
                                    {gt:50,lte:1000},
                                    {lte:50}
                                ],  
                                color:[
                                    '#404350',
                                    '#d73027',
                                    '#fdae61',
                                    '#313695',
                                    '#74add1',
                                    '#a1d99b',
                                    '#ffffbf',
                                    '#e0f3f8'
                                ],
                                align: 'right',
                                textStyle: {color: '#666'},
                            },
                            series:{
                                type:'map',
                                data:sum,
                                map:'China',
                            }
                        }
                    //依次存放各时间点对应的可变数据
                        for(var n=Day.length-1; n>=0; n--){
                            option_1.baseOption.timeline.data.push(Day[n]); //设置时间轴数据集
                            option_1.options.push({ //设置可变数据集
                                title:{
                                    show:true,
                                    text:Day[n]+''
                                },
                                series:{
                                    name:Day[n],
                                    type:'map',
                                    map:'China',
                                    data:data[n]
                                }
                            });
                        } 
                        myChart_1.setOption(option_1);
                        myChart_2.setOption(option_2);
                    });
                }
            });
            
        </script>
    </body>
</html>
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts 是一款由百度开发的、基于 JavaScript 的开源数据可视化库,它提供了丰富的图表类型和高度的可定制性,以帮助开发者轻松创建交互性强、美观且响应迅速的数据可视化界面。ECharts 支持在各种现代浏览器(包括移动设备上的浏览器)以及部分旧版浏览器(如 IE8/9/10/11)中运行,其底层依赖轻量级矢量图形库 ZRender,确保了图表渲染的高效性和跨平台兼容性。 以下是一些关于使用 ECharts 进行数据可视化的关键特性、图表类型和基本使用步骤: ### 关键特性 1. **开源免费**:ECharts 是开源软件,可以免费用于个人和商业项目,无需支付任何费用。 2. **广泛兼容**:支持多种浏览器环境,包括但不限于 Chrome、Firefox、Safari 和 Internet Explorer 系列,保证在不同设备和操作系统上的良好表现。 3. **丰富图表类型**:包括但不限于折线图、柱状图、散点图、饼图、K线图、盒形图、地图、热力图、线图、关系图、treemap、旭日图、平行坐标、漏斗图、仪表盘等,以及三维可视化组件(通过 ECharts GL 扩展)。 4. **交互性强**:图表支持鼠标悬停提示、数据区域缩放、图表联动、图表堆叠、数据过滤、图例开关等多种交互功能,提升用户对数据的探索和理解能力。 5. **个性化定制**:提供详细的配置选项,允许用户自定义图表的颜色、字体、网格线、图例、tooltip、轴标签、数据标签、动画效果等,以满足特定设计需求和品牌风格。 6. **数据更新动态渲染**:能够实时接收新数据并动态更新图表,适用于数据流或实时监控场景。 7. **扩展性**:除了核心库外,有 ECharts GL 用于三维和大规模地理数据可视化,以及周边生态工具(如 ECharts-GL、ZRender)增强其功能和适用范围。 ### 图表类型 ECharts 提供的图表类型涵盖了数据分析和展示的常见需求,包括: - **基础图表**:折线图、柱状图、散点图、饼图、K线图 - **统计图表**:盒形图 - **地理图表**:地图、热力图、线图 - **关系图表**:关系图、treemap、旭日图 - **多维数据可视化**:平行坐标 - **BI图表**:漏斗图、仪表盘 此外,ECharts 支持图表间的混搭,即在一个图表容器内同时展现多种图表类型,以对比或关联不同数据维度。 ### 使用步骤 使用 ECharts 进行数据可视化的一般步骤如下: #### 1. 引入 ECharts 库 在 HTML 文件中通过 `<script>` 标签引入 ECharts 的核心文件: ```html <script src="https://cdn.jsdelivr.net/npm/echarts@版本号/dist/echarts.min.js"></script> ``` 确保替换 `版本号` 为所需的 ECharts 版本。 #### 2. 准备 DOM 容器 在页面上创建一个用于承
数据可视化是数据科学领域中重要的一环,它通过图表、图形和其他可视化工具将数据呈现出来,以便能够更好地理解和分析数据。 首先,数据可视化可以帮助我们更好地理解数据。通过将数据可视化成图表或图像,我们可以直观地看到数据的分布、趋势和模式。这些可视化结果可以让我们更容易地发现数据中的有意义的信息,并且帮助我们深入理解数据所传达的含义。 其次,数据可视化还可以帮助我们发现数据中的异常值。通过对数据进行可视化,我们可以快速地发现与众不同的数据点或异常模式。这些异常值可能是我们的数据收集过程中的错误,或者是数据背后隐藏的重要信息。通过识别和处理这些异常值,我们可以提高数据质量和分析的准确性。 此外,数据可视化也有助于数据的传达和沟通。在现实世界中,不同背景的人对于数据的理解能力和统计分析的能力有所差异。数据可视化可以帮助我们以更直观的方式向其他人传达数据,使得他们更容易理解和接受数据的分析结果。通过合适的图表和图形,我们可以有效地解释数据背后的趋势和关系,并与其他人进行更有意义的讨论和决策。 综上所述,数据可视化在数据科学中起着重要的作用。它不仅帮助我们更好地理解和分析数据,发现异常值,还能够向他人有效传达和沟通数据。因此,在进行数据科学工作时,数据可视化是必不可少的一项技能和工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值