web应用实战篇(echart篇):一步步教你做可视化大屏(准备篇)

一直计划做一个可视化的大屏,然后今天花了一些时间做前期的准备工作,下面是准备过程中的一些总结,分享给大家伙,希望你们能够喜欢!
下面正式进入主题吧!web应用实战篇(echart):一步步教你做可视化大屏(准备篇)

一、什么是ECharts

ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

(一)丰富的可视化类型

ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

(二)多种数据格式无需转换直接使用

ECharts 内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,通过简单的设置 encode 属性就可以完成从数据到图形的映射,这种方式更符合可视化的直觉,省去了大部分场景下数据转换的步骤,而且多个组件能够共享一份数据而不用克隆。

(三)深度的交互式数据探索

交互是从数据中发掘信息的重要手段。“总览为先,缩放过滤按需查看细节”是数据可视化交互的基本需求。
ECharts 提供了 图例、视觉映射、数据区域缩放、tooltip、数据刷选等开箱即用的交互组件,可以对数据进行多维度数据筛取、视图缩放、展示细节等交互操作。

(四)多维数据的支持以及丰富的视觉编码手段

ECharts 3 开始加强了对多维数据的支持。除了加入了平行坐标等常见的多维数据可视化工具外,对于传统的散点图等,传入的数据也可以是多个维度的。配合视觉映射组件 visualMap 提供的丰富的视觉编码,能够将不同维度的数据映射到颜色、大小、透明度、明暗度等不同的视觉通道。

(五)动态数据

ECharts 由数据驱动,数据的改变驱动图表展现的改变。因此动态数据的实现也变得异常简单,只需要获取数据,填入数据,ECharts 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。配合 timeline 组件能够在更高的时间维度上去表现数据的信息。

二、第一个完整的案例

(一)引入 ECharts

通过标签方式直接引入构建好的 echarts 文件,下载地址:https://www.echartsjs.com/zh/download.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <!-- 引入 ECharts 文件 -->
    <script src="echarts.min.js"></script>
</head>
</html>

(二)绘制一个简单的DIV容器

在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。

<body>
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
</body>

(三)绘制一个简单的echarts实例

然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图,下面是完整代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入 ECharts 文件 -->
    <script type="text/javascript" src="{{ url_for('static',filename='echarts.min.js') }}"></script>
</head>
<body>
    <h1>hello echarts</h1>
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20],
                showBackground: true,
                backgroundStyle: {
                    color: 'rgba(220, 220, 220, 0.8)'
                }
            }]
        };
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

(四)运行效果

在这里插入图片描述

三、基本概念

(一)echarts 实例

一个网页中可以创建多个 echarts 实例。每个 echarts 实例 中可以创建多个图表和坐标系等等(用 option 来描述)。准备一个 DOM 节点(作为 echarts 的渲染容器),就可以在上面创建一个 echarts 实例。每个 echarts 实例独占一个 DOM 节点。

(二)系列(series)

系列(series)是很常见的名词。在 echarts 里,系列(series)是指:一组数值以及他们映射成的图。“系列”这个词原本可能来源于“一系列的数据”,而在 echarts 中取其扩展的概念,不仅表示数据,也表示数据映射成为的图。所以,一个 系列 包含的要素至少有:一组数值、图表类型(series.type)、以及其他的关于这些数据如何映射成图的参数。
echarts 里系列类型(series.type)就是图表类型。系列类型(series.type)至少有:line(折线图)、bar(柱状图)、pie(饼图)、scatter(散点图)、graph(关系图)、tree(树图)、…

(三)组件(component)

在系列之上,echarts 中各种内容,被抽象为“组件”。例如,echarts 中至少有这些组件:xAxis(直角坐标系 X 轴)、yAxis(直角坐标系 Y 轴)、grid(直角坐标系底板)、angleAxis(极坐标系角度轴)、radiusAxis(极坐标系半径轴)、polar(极坐标系底板)、geo(地理坐标系)、dataZoom(数据区缩放组件)、visualMap(视觉映射组件)、tooltip(提示框组件)、toolbox(工具栏组件)、series(系列)、…
其实系列(series)也是一种组件,可以理解为:系列是专门绘制“图”的组件。
在这里插入图片描述

(四)用 option 描述图表

上面已经出现了 option 这个概念。echarts 的使用者,使用 option 来描述其对图表的各种需求,包括:有什么数据、要画什么图表、图表长什么样子、含有什么组件、组件能操作什么事情等等。简而言之,option 表述了:数据、数据如何映射成图形、交互行为。

// 创建 echarts 实例。
var dom = document.getElementById('dom-id');
var chart = echarts.init(dom);

// 用 option 描述 `数据`、`数据如何映射成图形`、`交互行为` 等。
// option 是个大的 JavaScript 对象。
var option = {
    // option 每个属性是一类组件。
    legend: {...},
    grid: {...},
    tooltip: {...},
    toolbox: {...},
    dataZoom: {...},
    visualMap: {...},
    // 如果有多个同类组件,那么就是个数组。例如这里有三个 X 轴。
    xAxis: [
        // 数组每项表示一个组件实例,用 type 描述“子类型”。
        {type: 'category', ...},
        {type: 'category', ...},
        {type: 'value', ...}
    ],
    yAxis: [{...}, {...}],
    // 这里有多个系列,也是构成一个数组。
    series: [
        // 每个系列,也有 type 描述“子类型”,即“图表类型”。
        {type: 'line', data: [['AA', 332], ['CC', 124], ['FF', 412], ... ]},
        {type: 'line', data: [2231, 1234, 552, ... ]},
        {type: 'line', data: [[4, 51], [8, 12], ... ]}
    }]
};

// 调用 setOption 将 option 输入 echarts,然后 echarts 渲染图表。
chart.setOption(option);

(五)组件的定位

多数组件和系列,都能够基于 top / right / down / left / width / height 绝对定位。 这种绝对定位的方式,类似于 CSS 的绝对定位(position: absolute)。绝对定位基于的是 echarts 容器 DOM 节点。
其中,他们每个值都可以是:
绝对数值(例如 bottom: 54 表示:距离 echarts 容器底边界 54 像素)。
或者基于 echarts 容器高宽的百分比(例如 right: ‘20%’ 表示:距离 echarts 容器右边界的距离是 echarts 容器宽度的 20%)。
我们可以注意到,left right width 是一组(横向)、top bottom height 是另一组(纵向)。这两组没有什么关联。每组中,至多设置两项就可以了,第三项会被自动算出。例如,设置了 left 和 right 就可以了,width 会被自动算出。

(六)坐标系

很多系列,例如 line(折线图)、bar(柱状图)、scatter(散点图)、heatmap(热力图)等等,需要运行在 “坐标系” 上。坐标系用于布局这些图,以及显示数据的刻度等等。例如 echarts 中至少支持这些坐标系:直角坐标系、极坐标系、地理坐标系(GEO)、单轴坐标系、日历坐标系 等。其他一些系列,例如 pie(饼图)、tree(树图)等等,并不依赖坐标系,能独立存在。还有一些图,例如 graph(关系图)等,既能独立存在,也能布局在坐标系中,依据用户的设定而来。

一个坐标系,可能由多个组件协作而成。我们以最常见的直角坐标系来举例。直角坐标系中,包括有 xAxis(直角坐标系 X 轴)、yAxis(直角坐标系 Y 轴)、grid(直角坐标系底板)三种组件。xAxis、yAxis 被 grid自动引用并组织起来,共同工作。

四、一个优化的案例

ECharts 提供了丰富的自定义配置选项,并且能够从全局、系列、数据三个层级去设置数据图形的样式。下面我们来看如何使用 ECharts 实现上述的优化:

(一)显示数值

                label:{
                    show:true,
                    padding:3,
                    textShadowBlur:20,
                    textShadowColor:'rgba(0, 0, 0, 0.8)'
                },

(二)显示markpoint

                markPoint:{
                    symbol:'pin',
                    symbolSize:30,
                    data:[
                         {type: 'min', name: '最小值'},
                         {type: 'max', name: '最大值'},
                    ]
                },

(三)显示markline

                markLine: {
                    data: [
                        {type: 'average', name: '平均值'}
                    ]
            }

(四)修改柱子的颜色

            series: [{
                name: '销量',
                type: 'bar',
                color: ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C','#ff9f7f'],
                data: [5, 20, 36, 10, 10, 20],

(五)设置背景色

backgroundColor: '#999',

(六)设置visualMap效果

            visualMap: {
                show: false,
                min: 0,
                max: 50,
                inRange: {
                    colorLightness: [0, 1]
                }
            },

(七)增加数据区域缩放组件

    dataZoom: [
        {
            type: 'slider',
            xAxisIndex: 0,
            start: 10,
            end: 60
        },
        {
            type: 'inside',
            xAxisIndex: 0,
            start: 10,
            end: 60
        },
        {
            type: 'slider',
            yAxisIndex: 0,
            start: 30,
            end: 80
        },
        {
            type: 'inside',
            yAxisIndex: 0,
            start: 30,
            end: 80
        }
    ],

(七)最终完整的html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 引入 ECharts 文件 -->
    <script type="text/javascript" src="{{ url_for('static',filename='echarts.min.js') }}"></script>
</head>
<body>
    <h1>hello echarts</h1>
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
            backgroundColor: '#999',
            dataZoom: [
                {
                    type: 'slider',
                    xAxisIndex: 0,
                    start: 10,
                    end: 60
                },
                {
                    type: 'inside',
                    xAxisIndex: 0,
                    start: 10,
                    end: 60
                },
                {
                    type: 'slider',
                    yAxisIndex: 0,
                    start: 30,
                    end: 80
                },
                {
                    type: 'inside',
                    yAxisIndex: 0,
                    start: 30,
                    end: 80
                }
            ],
            visualMap: {
                show: false,
                min: 0,
                max: 50,
                inRange: {
                    colorLightness: [0, 1]
                }
            },
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                color: ['#32C5E9'],
                data: [5, 20, 36, 10, 10, 20],
                showBackground: true,
                backgroundStyle: {
                    color: 'rgba(220, 220, 220, 0.8)'
                },
                label:{
                    show:true,
                    padding:3,
                    textShadowBlur:20,
                    textShadowColor:'rgba(0, 0, 0, 0.8)'
                },
                markPoint:{
                    symbol:'pin',
                    symbolSize:30,
                    data:[
                         {type: 'min', name: '最小值'},
                         {type: 'max', name: '最大值'},
                    ]
                },
                markLine: {
                    data: [
                        {type: 'average', name: '平均值'}
                    ]
            }
            }]
        };
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

(八)运行效果

在这里插入图片描述
好吧,纯练手的作品,而且这只是介绍基础知识,因此UI不是本博文的重点,纯属抛砖引玉,希望大家喜欢。

感谢各位的阅读。
参考资料:https://www.echartsjs.com/zh/index.html

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ECharts是一款开源的数据可视化库,可以通过编写代码实现各种图表的展示。它提供了丰富的图表类型和交互功能,能够满足不同需求的数据展示。下面以一个源码demo来展示可视化大屏ECharts的使用。 首先,我们要在网页中引入ECharts的库文件,可以通过在<head>标签内添加<script>标签来实现: <script src="echarts.min.js"></script> 接下来,我们准备一个容器用于放置图表,可以是一个<div>标签,具体样式可以自己定义,这里给一个例子: <div id="chart" style="width:800px;height:500px;"></div> 然后,在页面中使用JavaScript代码来配置和绘制图表,示例如下: <script> // 初始化echarts实例 var myChart = echarts.init(document.getElementById('chart')); // 配置参数 var option = { // 图表类型 type: 'bar', // 图表数据 data: [10, 20, 30, 40, 50], // 图表配置 options: { xAxis: {}, yAxis: {}, series: [{ data: [10, 20, 30, 40, 50], type: 'bar' }] } }; // 使用配置项绘制图表 myChart.setOption(option); </script> 以上示例展示了一个柱状图的配置和绘制过程。首先,我们通过echarts.init方法初始化了一个ECharts实例,并传入了上一步定义的容器元素。然后,通过配置参数option来定义图表的类型、数据和其他配置信息。最后,调用myChart.setOption方法将配置应用到图表中进行绘制。 通过以上的代码示例,我们可以根据自己的需求配置不同类型的图表,并在页面上展示出来。ECharts不仅支持柱状图,还支持折线图、饼图、雷达图等多种图表类型,同时也提供了丰富的样式和交互功能,方便用户进行数据展示和分析。 ### 回答2: 可视化大屏Echart是一种基于Echart图表库的库,它支持通过自定义配置和数据输入来生成各类可视化图表,并将这些图表展示在大屏上。其源码demo包括以下几个主要方面: 1. 数据准备:源码demo会提供一个数据接口,用于从数据库或其他数据源中获取需要展示的数据。这些数据会通过一定的数据处理和转换,最终生成可供图表使用的数据集。 2. 图表配置:源码demo会提供一些默认的图表配置,比如图表的类型、颜色、样式等等。同时,也会支持用户自定义配置,方便用户根据自己的需求调整图表的展示效果。 3. 事件交互:源码demo会支持图表的交互操作,比如点击、拖拽等。这样用户可以通过操作图表来进行数据的筛选、排序等操作,实现更灵活的数据展示方式。 4. 布局管理:源码demo会提供一种灵活的布局管理方式,可以根据用户的需求自由地组合和排列不同的图表。这样用户可以根据自己的实际情况,将多个图表有机地组合在一起,形成一个统一的大屏展示效果。 总而言之,可视化大屏Echart的源码demo会提供一种简单、易用的方式来生成和展示各类可视化图表。通过自定义数据和配置,用户可以轻松地实现自己想要的大屏展示效果。同时,源码demo还提供了一些常用的功能和交互方式,帮助用户更好地理解和使用这个库。 ### 回答3: ECharts是一个开源的可视化图表库,通过JavaScript语言实现。它提供了丰富的图表类型,如折线图、柱状图、饼图等,可以用于展示各种数据。同时,ECharts还提供了灵活的配置项和交互功能,用户可以根据需要自定义图表样式和交互方式。 ECharts的源码demo是一个开源的示例项目,用于展示ECharts的基本使用方法和功能。在源码demo中,我们可以找到各种图表类型的示例代码,并通过修改配置项和数据来实现自定义的图表展示。除了图表展示,源码demo还提供了一些常用的交互功能,如数据筛选、动态更新等。 源码demo的项目结构一般包括HTML文件、JavaScript文件和数据文件。HTML文件用于定义图表所在的容器元素,引入ECharts库和相关样式文件,并调用JavaScript文件中的代码来生成图表。JavaScript文件中包含图表的配置项,如图表类型、图表样式、数据等,以及相关的交互功能的实现。数据文件一般以JSON格式保存,用于提供图表所需的数据。 通过查看源码demo,我们可以了解到ECharts的基本使用方法和配置项的含义。我们可以根据示例代码进行修改和扩展,实现自己的图表展示需求。如果对于特定的图表类型或交互功能需要更详细的了解,可以查看ECharts的官方文档或搜索相关的社区资源。 总之,源码demo是一个很好的学习和参考资源,可以帮助我们更深入地了解和使用ECharts库来实现可视化大屏的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值