【数据篇】33 # 可视化数据处理的一般方法是什么?

简介: 【数据篇】33 # 可视化数据处理的一般方法是什么?

说明

【跟月影学可视化】学习笔记。




数据可视化的一般过程


  1. 先看有什么样的数据:分析真实数据
  2. 然后看想从数据中了解什么信息:获取想要的信息
  3. 再决定使用何种可视化方式呈现:为数据选择正确的呈现形式
  4. 最后看展示的效果怎么样,是否有意义:了解数据背后有价值的内容




实战演练:对公园中的游客进行数据可视化


这里使用上一节的例子进行实战演练:数据还是那些,里面有时间、地点和性别。

[{
  "x": 456,
  "y": 581,
  "time": 12,
  "gender": "f"
}, {
  "x": 293,
  "y": 545,
  "time": 12,
  "gender": "m"
}, {
...
}]


  • 第一步:假设我们想了解公园一天中的游客变化规律
  • 第二步:需要统计不同时间段公园内人数
  • 第三步:要呈现游客在不同时间段的变化规律,使用折线图来呈现


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>公园24小时游客人数变化图</title>
        <style>
            html,
            body {
                width: 100%;
                height: 100%;
            }
            #container {
                width: 600px;
                height: 600px;
                border: 1px dashed #fa8072;
            }
        </style>
    </head>
    <body>
        <script src="https://d3js.org/d3.v6.js"></script>
        <script src="https://unpkg.com/spritejs@3/dist/spritejs.min.js"></script>
        <div id="container"></div>
        <script>
            const { Scene, Sprite, Polyline, SpriteSvg } = spritejs;
            (async function () {
                const data = await (await fetch("./data/park-people.json")).json();
                // 用到 d3.rollups 它可以对数据进行分组,然后汇总
                const dataset = d3
                    .rollups(
                        data,
                        (v) => v.length,
                        (d) => d.time
                    )
                    .sort(([a], [b]) => a - b);
                // 假设公园是早晨 6 点开门,晚上 22 点关门,此时游客数为0
                dataset.unshift([6, 0]);
                dataset.push([22, 0]);
                console.log(dataset);
                const scene = new Scene({
                    container,
                    width: 600,
                    height: 600,
                    displayRatio: 2,
                });
                const fglayer = scene.layer("fglayer");
                // 把数据转换成要显示的折线上的点坐标
                const points = [];
                dataset.forEach((d, i) => {
                    const x = 20 + 20 * d[0];
                    const y = 300 - d[1];
                    points.push(x, y);
                });
                // 用 SpriteJS 创建 Polyline 元素,把这个折线点坐标传给它
                const p = new Polyline();
                p.attr({
                    points,
                    lineWidth: 4,
                    strokeColor: "salmon",
                    smooth: true,
                });
                fglayer.append(p);
                // 创建坐标轴
                // 设置 domain 从 0 到 24,表示一天的 24 个小时,range 从 0 到 480,表示占据 480 像素宽度。
                const scale = d3.scaleLinear().domain([0, 24]).range([0, 480]);
                // 通过 d3.axisBottom 高阶函数,用创建的 scale 来生成一个具体的坐标轴算子 axis
                const axis = d3
                    .axisBottom(scale)
                    .tickValues(dataset.map((d) => d[0]));
                const axisNode = new SpriteSvg({
                    x: 20,
                    y: 300,
                    flexible: true,
                });
                d3.select(axisNode.svg)
                    .attr("width", 600)
                    .attr("height", 60)
                    .append("g")
                    .call(axis);
                axisNode.svg.children[0].setAttribute("font-size", 20);
                fglayer.append(axisNode);
            })();
        </script>
    </body>
</html>


第四步:大致就得到了一天中游园人数的变化趋势,这对公园来说是有一些参考价值的。

f454eabc955f4fd399ec8b587619768a.png



目录
相关文章
|
6月前
|
数据采集 SQL 分布式计算
81 网站点击流数据分析案例(数据预处理功能)
81 网站点击流数据分析案例(数据预处理功能)
44 0
|
7月前
|
消息中间件 数据挖掘 Kafka
实时数据分析演示
实时数据分析演示
|
9月前
|
XML 数据处理 数据格式
数据处理
4.4数据处理 4.4.1 数据清单 1具有二维表特性的电子表格在Excel中被称为数据清单。 2行表示记录,列表示字段。 3数据清单的第一行必须为文本类型,为相应列的名称. 4在此行的下面是连续的数据区域,每一列包含相同类型的数据. 4.4.2 排序和筛选 1、排序 1单个关键字排序 单击待排序字段数据列表中的任意一个单元格,单击“数据“选项卡,在“排序和筛选”组中,单击“升序”按钮,则按排序字段从小到大排序,若单击“降序”按钮,则按排序字段从大到小排序。 2多关键字排序 单击数据清单任意单元格,单击“数据”选项卡,在“排序和筛选”组中,单击“排序”按钮,打开排序对话框 1
|
数据采集 消息中间件 监控
功能介绍数据处理详解|学习笔记
快速学习功能介绍数据处理详解
286 0
功能介绍数据处理详解|学习笔记
|
消息中间件 分布式计算 数据可视化
通过Flink+NBI可视化构建实时分析系统
Flink: Apache Flink是一个计算框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。 Flink主要特点: 1、高吞吐、低延迟、纯流式架构; 2、支持对乱序事件的处理; 3、有状态、提供exactly-once计算; 4、高度灵活的窗口机制; 5、失败恢复、故障转移、水平扩展; 6、批处理、流处理统一的API
通过Flink+NBI可视化构建实时分析系统
|
数据处理
R分享|玩转数据处理120题
通过github获取大佬们开源项目的源代码和数据,并且理解大佬们便编写代码的技巧和思想,这是进阶R以及其他语言的最有效方法之一了。
84 0
R分享|玩转数据处理120题
|
机器学习/深度学习 数据采集 SQL
|
数据处理
数据处理第3部分:选择行的基本和高级的方法
原文地址:https://suzan.rbind.io/2018/02/dplyr-tutorial-3/ 作者:Suzan Baert 这是系列dplyr系列教程中的第三篇博客文章。
911 0
|
监控 数据可视化 BI
实时数据的可视化
通常来说,可视化的报表会以更高效率的方式将数据背后隐藏的信息传递给我们。通过一个简单的BarChart,我们就很容易对比某商品在第二季度中的销量差异;而通过一条简单的LineChart,则很容易看出员工平均工作时间在某个月份的分布。
2408 0
|
数据可视化 大数据 关系型数据库
数据分析:构建可视化报表服务
摘要:本手册为北京云栖 Workshop《云数据·大计算:快速搭建互联网在线运营分析平台》的《数据分析:构建可视化报表服务》篇而准备。主要阐述如何使用Quick BI制作报表,将前面几个实验处理分析得来的数据进行有效的展现和洞察。
6658 0