数据可视化-上海地区风速变化折线图

数据可视化

上海地区风速变化折线图

一、实验名称

上海地区风速变化折线图

二、实验目的

通过该实验的实践,要求学生能够掌握JavaScript的基本原理并能够熟练应用JavaScript制作可视化图表。

三、实验原理

JavaScript由Netscape(网景)公司开发,起初命名为LiveScript,也是面向对象的语言,无需编译可由浏览器直接解释运行。

JavaScript是直译式脚本语言,为网页添加各种动态效果,不需编译通过某种解释器运行。

四、实验步骤

一、项目搭建

1、新建项目

桌面新建文件夹,命名为Echarts-demo,使用VScode工具打开文件夹。

打开VScode,点击文件/打开文件夹,选择文件夹。

2、新建index.html文件

3、下载数据文件并加入到Echarts-demo文件夹下

二、代码实现

1、引入 Echarts 库

在 HTML 文件中引入数据文件以及echarts.min.js文件,代码如下:

2、创建图表容器

在 HTML 文件中定义一个具有唯一 id 的容器元素,用于承载图表

代码如下:

3、提取日期数据

提取不同的站点名称跟日期数据用于创建x轴跟图例。代码如下:

4、设置图表配置项和数据

创建一个 echarts 实例并配置折线图选项。代码如下:

5、渲染和显示图表

设置echarts实例点击事件,代码如下:

6、完整代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>上海地区风速变化折线图</title>
    <!-- 引入ECharts库 -->
    <script src="echarts.min.js"></script>
    <script src="data.js"></script>
</head>
<body>
<!-- 图表容器 -->
<div id="line-chart" style="width: 1000px; height: 600px;"></div>
<script>
    // 提取特定日期(20160401)的数据
    var targetDate = 20160401;
    var dataForTargetDate = source.filter(function (item) {
        return item.datetime.toString().includes(targetDate.toString());
    });
    dataForTargetDate.forEach(value => value.datetime = formatDateTime(value.datetime))
    // 提取所有不同的站点名称,用于创建图例
    var legendData = [...new Set(dataForTargetDate.map(item => item.name))];
    // 提取所有不同的日期时间值,用于创建x轴
    var datetimeValues = [...new Set(dataForTargetDate.map(item => item.datetime))];
    // 构建 dataset 的维度定义
    var dimensions = [
        {name: 'datetime', type: 'wind_speed'}
    ];
    // 构建 dataset 的数据
    var seriesData = legendData.map(function (name) {
        return {
            name: name,
            type: 'line',
            encode: {
                x: 'datetime',
                y: 'wind_speed'
            },
            data: dataForTargetDate.filter(function (item) {
                return item.name === name;
            }).map(function (item) {
                return [item.datetime, item.wind_speed];
            })
        };
    });
    // 创建ECharts实例
    var myChart = echarts.init(document.getElementById('line-chart'));
    // 配置折线图选项
    var option = {
        title: {
            text: '上海各地风速变化'
        },
        legend: {
            data: legendData,
            top: '5%'
        },
        grid: {
            top: '10%'
        },
        xAxis: {
            type: 'time',
            splitLine: {
                show: false
            },
            data: datetimeValues
        },
        yAxis: {
            type: 'value'
        },
        series: seriesData
    };
    // 使用配置项显示折线图
    myChart.setOption(option);
    // 添加事件监听,用于在点击时触发 alert 显示数据
    myChart.on('click', function (params) {
        if (params.componentType === 'series') {
            var dataItem = params.data;
            if (dataItem) {
                // 在这里触发 alert 显示数据,例如:
                alert('站点:' + params.seriesName + '\n' +
                    '时间:' + dataItem[0] + '\n' +
                    '风速:' + dataItem[1] );
            }
        }
    });
    window.addEventListener('resize', myChart.resize);
    function formatDateTime(input) {
        // 将数字转换为字符串
        var inputStr = input.toString();
        // 校验输入是否合法,必须是12位数字
        if (/^\d{12}$/.test(inputStr)) {
            // 提取年、月、日、小时和分钟
            var year = inputStr.slice(0, 4);
            var month = inputStr.slice(4, 6);
            var day = inputStr.slice(6, 8);
            var hour = inputStr.slice(8, 10);
            var minute = inputStr.slice(10, 12);
            // 格式化为标准时间格式
            var formattedDate = year + '-' + month + '-' + day + ' ' + hour + ':' + minute;
            return formattedDate;
        } else {
            return 'Invalid input';
        }
    }
</script>
</body>
</html>

右键index.html,选择Open with live server:

展示结果

五、实验总结

本实验使用JavaScript.js对上海地区风速数据进行可视化分析,讲解了引入 echarts 库,创建图表容器等一系列操作,使同学们掌握JavaScript的基本原理并能够熟练应用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值