版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章Echarts可视化库本章重点◎了解Echarts基本概念和特点◎理解Echarts的安装和配置方法◎掌握Echarts样式设置◎掌握Echarts异步数据加载和更新◎掌握Echarts数据集的使用目录CONTENTSEcharts基础3.1Echarts饼图3.2Echarts样式设置3.3Echarts异步数据加载和更新3.4Echarts数据集3.5Echarts
交互组件3.6Echarts
响应式3.7Echarts
数据视觉映射3.8Echarts基础3.1Echarts
是一个使用JavaScript实现的开源可视化库,涵盖各行业图表,满足各种需求。Echarts
遵循Apache-2.0开源协议,免费商用。Echarts
兼容当前绝大部分浏览器及兼容多种设备,可随时随地任性展示。学习Echarts数据可视化之前需要HTML和JavaScript的基础知识。3.1.1Echarts概览1.Echarts
实例一个网页中可以创建多个Echarts
实例。每个Echarts
实例中可以创建多个图表和坐标系(用option来描述)。准备一个DOM节点(作为Echarts
的渲染容器),就可以在上面创建一个Echarts
实例。每个Echarts
实例独占一个DOM节点。如图3-1所示,有两个DOM节点。3.1.1Echarts概览2.系列(series)系列(series)是很常见的名词。在Echarts
里,系列是指:一组数值及它们映射成的图。“系列”这个词原本可能来源于“一系列的数据”,而在Echarts中取其扩展的概念,不仅表示数据,也表示数据映射成为的图。所以,一个系列包含的要素至少有:一组数值、图表类型(series.type)、以及其他的关于这些数据如何映射成图的参数。Echarts
里系列类型(series.type)就是图表类型。系列类型(series.type)至少有:line(折线图)、bar(柱形图)、pie(饼图)、scatter(散点图)、graph(关系图)、tree(树图)等,如图3-2所示,右侧的option中声明了三个系列(series):pie(饼图系列)、line(折线图系列)和bar(柱形图系列),每个系列中有他所需要的数据(series.data)。如图3-2绘制了3种图表:饼图、折线图和柱形图的混合图,以及每种图表的代码和图表对应关系。3.1.1Echarts概览3.组件(component)在系列之上,Echarts
中各种内容,被抽象为“组件”。例如,Echarts
中至少有这些组件:xAxis(直角坐标系X轴)、yAxis(直角坐标系Y轴)、grid(直角坐标系底板)、angleAxis(极坐标系角度轴)、radiusAxis(极坐标系半径轴)、polar(极坐标系底板)、geo(地理坐标系)、dataZoom(数据区缩放组件)、visualMap(视觉映射组件)、tooltip(提示框组件)、toolbox(工具栏组件)、series(系列)等。其实系列(series)也是一种组件,可以理解为:系列是专门绘制“图”的组件。如图3-3所示,右侧的option中声明了各个组件(包括系列),各个组件就出现在图中。3.1.1Echarts概览4.用option描述图表上面已经出现了option的概念。Echarts
的使用者,使用option来描述其对图表的各种需求,包括:有什么数据、要画什么图表、图表长什么样子、含有什么组件、组件能操作什么事情等。简而言之,option表述了数据、数据如何映射成图形、交互行为。代码和注释如下所示。系列里的series.data
是本系列的数据。而另一种描述方式,系列数据从dataset中取:3.1.1Echarts概览5.组件的定位不同的组件、系列,常有不同的定位方式。1)类CSS的绝对定位。多数组件和系列,都能够基于top/right/down/left/width/height绝对定位。这种绝对定位的方式,类似于CSS的绝对定位(position:absolute)。绝对定位基于的是Echarts
容器DOM节点。其中,它们每个值都可以是以下两种取值。(1)绝对数值(例如bottom:54,表示:距离Echarts
容器底边界54像素)。(2)或者基于Echarts
容器高宽的百分比(例如right:'20%‘,表示:距离Echarts
容器右边界的距离是Echarts
容器宽度的20%)。如图3-4所示的例子,对grid组件(也就是直角坐标系的底板)设置left、right、height、bottom达到的效果。3.1.1Echarts概览通过图3-4的布局和代码可以看到,left、right、width是一组(横向);top、bottom、height是另一组(纵向)。这两组没有什么关联。每组中,至多设置两项就可以了,第三项会被自动算出。例如,设置了left和right就可以了,width会被自动算出。2)中心半径定位。少数圆形的组件或系列,可以使用“中心半径定位”,例如,pie(饼图)、sunburst(旭日图)、polar(极坐标系)。中心半径定位,往往依据center(中心)、radius(半径)来决定位置。3)其他定位。少数组件和系列可能有自己的特殊的定位方式。在他们的文档中会有说明。3.1.1Echarts概览6.坐标系很多系列,如line(折线图)、bar(柱形图)、scatter(散点图)、heatmap(热力图)等,需要运行在“坐标系”上。坐标系用于布局这些图及显示数据的刻度等。例如,Echarts
中至少支持这些坐标系:直角坐标系、极坐标系、地理坐标系(GEO)、单轴坐标系、日历坐标系等。其他一些系列,如pie(饼图)、tree(树图)等,并不依赖坐标系,能独立存在。还有一些图,如graph(关系图)等,既能独立存在,也能布局在坐标系中,依据用户的设定而来。一个坐标系,可能由多个组件协作而成。以最常见的直角坐标系来举例,直角坐标系中,包括有xAxis(直角坐标系X轴)、yAxis(直角坐标系Y轴)、grid(直角坐标系底板)三种组件。xAxis、yAxis
被grid自动引用并组织起来,共同工作。1)最简单的坐标系。如图3-5所示,这是最简单的使用直角坐标系的方式:只声明了xAxis、yAxis
和一个scatter(散点图系列),Echarts自动为他们创建了grid并关联起他们。2)两个yAxis,共享了一个xAxis。两个series,也共享了这个xAxis,但是分别使用不同的yAxis,使用yAxisIndex
来指定它自己使用的是哪个yAxis,如图3-6所示。3.1.1Echarts概览3)一个Echarts
实例中,有多个grid。每个grid分别有xAxis、yAxis,他们使用xAxisIndex、yAxisIndex、gridIndex
来指定引用关系,如图3-7所示。另外,在一个系列里,往往能运行在不同的坐标系中。例如,一个scatter(散点图)能运行在直角坐标系、极坐标系、地理坐标系等各种坐标系中。同样,一个坐标系,也能承载不同的系列,如上面出现的各种例子,直角坐标系里承载了line(折线图)、bar(柱形图)等。3.1.2Echarts安装与配置1.安装(1)独立版本。可以直接下载Echarts.min.js并用<script>标签引入。另外,开发环境下可以使用源代码版本Echarts.js并用<script>标签引入,源码版本包含了常见的错误提示和警告。也可以在Echarts
的官网上直接下载更多丰富的版本,包含了不同主题跟语言,主要有完全版(Echarts/dist/Echarts.js)、常用版(Echarts/dist/Emon.js)和精简版(Echarts/dist/Echarts.simple.js)。(2)使用CDN方法。以下推荐国外比较稳定的两个CDN,国内还没发现哪一家比较好,可以使用三种在线js文件的任何一种,但是目前还是建议下载到本地。3.1.2Echarts安装与配置2.配置本节的主要目的是为大家介绍使用Echarts
生成图表的一些配置方法和配置步骤。下面以绘制柱形图为例来展示Echarts图表绘制过程。1)创建HTML页面:创建一个HTML页面,引入Echarts.min.js。2)为Echarts
准备具备高宽的DOM容器:实例中id="main"的div用于包含Echarts
绘制的图表。3)设置配置信息:Echarts
库使用json
格式来配置。主要包括:标题、提示信息、图例组件、x轴、y轴、系列列表。3.1.2Echarts安装与配置Echarts饼图3.2Echarts使用javaScript实现的开源可视化库,可以流畅的运行在PC端和移动设备上,兼容当前绝大部分浏览器(MicrosoftEdge、Chrome、Firefox、Safari等),底层依赖轻量级的矢量图形库,提供直观,交互丰富,可高度个性化定制的数据可视化图表。具体可绘制的图表和type参数值的对应,如表3-1所示,并且可以支持各类图表的的混搭。3.2.1饼图通过前面的Echarts相关配置,我们已经学会使用Echarts绘制一个简单的柱形图,本节我们将绘制饼图和在饼图基础上的个性化图表样式。饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱形图更简单,只有一维的数值,不需要给类目。因为不在直角坐标系上,所以也不需要xAxis,yAxis。绘制饼图大致有以下4个步骤。步骤1:在页面先引入Echarts.js或Echarts.min.js,还可以引入jquery.js,这里面包含了所有的组件。语句为:步骤2:在body里面建立一个饼图的容器div,必须要有宽高属性。语句为:步骤3:对容器进行初始化,即获取div,用Echarts.js进行init,语句为:步骤4:初始化之后就可以进行参数设置了,语句为:步骤5:使用刚指定的配置项和数据显示图表。语句为3.2.2南丁格尔图ApacheEchartsTM
提供了丰富的自定义配置选项,并且能够从全局、系列、数据三个层级去设置数据图形的样式。Echarts
中的饼图支持通过设置roseType
显示成南丁格尔图,下面我们来看如何使用Echarts
实现南丁格尔图,南丁格尔图会通过半径表示数据的大小。语句如下,绘制的南丁格尔图,如图3-9所示。3.2.2南丁格尔图1.阴影的配置Echarts
中有一些通用的样式,诸如阴影、透明度、颜色、边框颜色、边框宽度等,这些样式一般都会在系列的itemStyle
里设置。例如,阴影的样式可以通过下面几个配置项设置,效果如图3-10所示。3.2.2南丁格尔图2.深色背景和浅色标签
整个主题改成深色主题,这就需要改背景色和文本颜色。如图3-11所示。1)背景色是全局的,所以直接在option下设置backgroundColorbackgroundColor:'#2c343c'2)文本的样式可以设置全局的textStyle。textStyle:{color:'rgba(255,255,255,0.3)'}3)也可以每个系列分别设置,每个系列的文本设置在label.textStyle。label:{textStyle:{color:'rgba(255,255,255,0.3)'}}4)饼图还要将标签的视觉引导线的颜色设为浅色。labelLine:{lineStyle:{color:'rgba(255,255,255,0.3)'}}Echarts样式设置3.3Echarts
可以通过样式设置来改变图形元素或者文字的颜色、明暗、大小等。本节主要介绍:颜色主题(Theme)、调色盘、直接样式设置(itemStyle、lineStyle、areaStyle、label、...)和视觉映射(visualMap),他们的功能范畴可能会有交叉(即同一种细节的效果可能可以用不同的方式实现),但是他们各有各的场景偏好。3.3.1颜色主题最简单的更改全局样式的方式,是直接采用颜色主题(theme)。Echarts4开始,新内置了两套主题,分别为'light'和'dark',分别如图3-12(a)和3-12(b)所示。语句如下:varchart=Echarts.init(dom,'light');或者varchart=Echarts.init(dom,'dark');3.3.1颜色主题另外,也可以在Echarts官方的主题编辑器选择自己喜欢的主题下载,如图3-13所示。下载下来的主题,如果主题保存为JSON文件,那么可以自行加载和注册,例如:$.getJSON('xxx/xxx/vintage.json',function(themeJSON){
Echarts.registerTheme('vintage',JSON.parse(themeJSON))varchart=Echarts.init(dom,'vintage');});如果保存为UMD格式的JS文件,直接引入JS文件,即引入vintage.js文件后(假设主题名称是"vintage"),然后在Echarts实例中使用vintage主体。<scriptsrc=’Echarts.min.js’></script>varchart=Echarts.init(dom,'vintage');3.3.1颜色主题如果保存为UMD格式的JS文件,直接引入JS文件,即引入vintage.js文件后(假设主题名称是"vintage"),然后在Echarts实例中使用vintage主体,如图3-14所示。3.3.1颜色主题【示例3-2】使用vintage主体绘制南丁格尔图。(1)示例代码如下所示:(2)运行结果如图3-15所示。3.3.2调色盘调色盘,可以在option中设置。它给定了一组颜色,图形、系列会自动从其中选择颜色。可以设置全局的调色盘,也可以设置系列自己专属的调色盘。下面通过两个实例来展示全局调色盘和系列专属调色盘的设置。【示例3-3】使用全局调色盘。1)语句代码如下所示:全局调色盘3.3.2调色盘【示例3-4】使用系列专属调色盘。1)语句代码如下所示:3.3.3直接的样式和高亮样式1.直接样式设置。直接样式设置是比较常用设置方式。纵观Echarts的option中,很多地方可以设置itemStyle、lineStyle、areaStyle、label等属性。这些的地方可以直接设置图形元素的颜色、线宽、点的大小、标签的文字、标签的样式等。(1)areaStyle属性。可以设置折线图线下方区域颜色修改。可以简单的纯色填充,设置color(填充颜色)opacity(透明度0-1)和origin(填充的位置:’start’)属性,如图3-18所示;也可以设置为过渡颜色,如图3-19所示。3.3.3直接的样式和高亮样式(2)lineStyle属性。可以设置线条的宽度(width)、颜色(color)和线形(type取值可以为:'solid':实线。'dotted':点型虚线、'dashed':线性虚线)。(3)label属性。可以设置文本的字体(fontFamily)、颜色(color)和大小(fontSize)。(4)itemStyle属性。可以设置饼状图扇形区域样式,包括shadowColor、shadowBlur、shadowOffsetX、shadowOffsetY。其中shadowColor定义阴影颜色样式,shadowBlur定义阴影模糊系数(属性默认为0,没有模糊),shadowOffsetX定义阴影X轴偏移量,shadowOffsetY定义阴影Y轴偏移量。2.高亮样式设置。在鼠标悬浮到图形元素上时,一般会出现高亮的样式。默认情况下,高亮的样式是根据普通样式自动生成的。但是高亮的样式也可以自己定义,主要是通过emphasis属性来定制。emphasis中的结构,和普通样式的结构相同,设置方式如图3-20所示。事实上,多数情况下,使用者只会配置普通状态下的样式,而使用默认的高亮样式。所以在Echarts4中,支持不写normal的配置方法,使得配置项更扁平简单。3.3.3直接的样式和高亮样式【示例3-5】使用直接和高亮样式的图形。在柱形图部分通过lineStyle属性设置x轴和y轴的线的颜色和宽度;在饼图部分通过在label和itemStyle属性中设置emphasis部分的相关参数,实现当鼠标悬浮在某个扇区中时,扇区添加边框和扇区文本字体和颜色的变化,运行结果和代码解释如图3-21所示。(1)第14行代码中的axisLine:{lineStyle:{color:"#034932",width:2}语句,实现了设置x轴线的颜色和宽度。(2)第15行代码中的yAxis:{axisLine:{lineStyle:{color:"#034932",width:2}}},设置y轴线的颜色和宽度。(3)第32~35行代码如下,实现了设置鼠标在饼图悬浮时字体、大小和颜色;设置饼图区域线条的颜色和线形。(4)第36行代码,normal:{shadowBlur:150,shadowColor:'black'},实现了设置饼图在正常模式下饼图阴影模糊程度和阴影的颜色。前面示例中的数据是初始化后在setOption
中直接填入的,但是很多时候肯数据需要异步加载后再填入。Echarts异步数据加载和更新3.4ApacheEchartsTM中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过jQuery等工具异步获取数据后通过setOption填入数据和配置项就行。或者先设置完其它的样式,显示一个空的直角坐标轴,然后获取数据后填入数据。通过如下案例展示异步加载JSON数据的方法。3.4.1异步数据加载3.4.1异步数据加载【示例3-6】异步加载本地JSON文件数据。1)JSON文件。在当前网页文件下一级目录datas下创建一个data1.json文件,文件内容如下:2)网页文件代码语句如下:4)说明:本案例中读取本地JSON文件,在浏览器请求中,出现跨域访问资源的问题,如果跨域请求被阻止,有可能导致css、js、ajax请求、font字体等资源出现无法正常访问的问题。解决这一问题的方案有很多种,在此,只介绍一种相对简单的方法,以火狐浏览器为例,在地址栏输入“about:config”后,单击“接受风险并继续”按钮,在搜索框中输入“security.fileuri.strict_origin_policy”后,并设置该项为“false”,则会载入读取的JSON文件数据,正确的显示图形。3.4.2loading动画如果数据加载时间较长,一个空的坐标轴放在画布上也会让用户觉得是不是产生bug了,因此需要一个loading的动画来提示用户数据正在加载。Echarts
默认有提供了一个简单的加载动画。只需要调用showLoading
方法显示。数据加载完成后再调用hideLoading
方法隐藏加载动画。如图3-23所示,语句代码如下所示。3.4.3数据的动态更新Echarts由数据驱动,数据的改变驱动图表展现的改变,因此动态数据的实现也变得异常简单。所有数据的更新都通过setOption实现,你只需要定时获取数据,setOption
填入数据,而不用考虑数据到底产生了那些变化,Echarts
会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。通过如下示例展示数据的动态更新效果和数据的设置。【示例3-7】绘制折线图实现数据的动态更新。(1)网页文件代码语句如右图所示:(2)Echarts动态数据更新的折线图如图3-24所示。最后简单总结本示例中Echarts的折线图表的xAxis.boundaryGap或yAxis.boundryGap属性。该属性对于类目轴和非类目轴的设置和表现不一样。boundaryGap属性如表3-2所示。Echarts数据集3.5ApacheEchartsTM4开始支持dataset组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以基于数据指定数据到视觉的映射。Echarts4
以前,数据只能声明在各个“系列(series)”中,这种方式的优点是,直观易理解,以及适于对一些特殊图表类型进行一定的数据类型定制。但缺点为:为匹配这种数据输入形式,常需要有数据处理的过程,把数据分割设置到各个系列和类目轴中;不利于多个系列共享一份数据,也不利于基于原始数据进行图表类型、系列的映射安排。Echarts4
提供了数据集dataset组件来单独声明数据,它带来如下效果。(1)能够贴近数据可视化常见思维方式:提供数据;指定数据到视觉的映射,从而形成图表。(2)数据和其他配置可以被分离开来。数据常变,其他配置常不变。(3)数据可以被多个系列或者组件复用,对于大数据量的场景,不必为每个系列创建一份数据。(4)支持更多数据的常用格式,例如二维数组、对象数组等,可以避免数据格式转换。3.5.1数据集和系列的对应关系数据集与系列的对应关系分为以下四种情况,分别通过示例分析和讲解。1.一行数据对应一个系列当数据集中只有行数据,系列中也只有一个系列时,坐标系中什么也没有,默认情况下,类目轴对应到dataset第一列。注意这里的x轴是类目轴,如图3-25所示。2.一行数据对应多个系列通过上面的示例可以看到,虽然坐标系中什么也没有,但是上面还是有一个2023,当添加多个系列后,会根据系列数量添加legend,如图3-26(a)所示,但是当系列过多时,只会根据第一行数据来增加上面的legend,如图3-26(b)所示。3.5.1数据集和系列的对应关系3.多行数据对应一个系列当数据集中有多行数据,但只有一个系列时,柱状表的个数取决于数据的行数,x轴的坐标是数据的第一列元素,y轴的值是数据的第二列元素值,如图3-27所示。3.5.1数据集和系列的对应关系4.多行数据对应多个系列通过上面的三种情况,了解了数据集和系列的对应关系。当多行数据对应多个系列时,每一个系列对应的值是数据集从左向有逐列对应的。3列数据对应2个系列如图3-28(a)所示,分别对应第2和第3列数据;3列数据对应3个系列如图3-28(b)所示,分别对应全部的2~4列数据,3列数据对应6个系列如图3-28(c)所示,多出来的系列y轴数据值均为第2列的值。简单概括,数据集中除第一行元素外,每一行数据对应x轴的一个类目,每列数据对应一个系列,有多少个系列,一个类目中就有多少个图。3.5.2维度常用图表所描述的数据大部分是“二维表”结构,上述的例子中,我们都使用二维数组来容纳二维表。现在,当我们把系列(series)对应到“列”的时候,那么每一列就称为一个“维度(dimension)”,而每一行称为数据项(item)。反之,如果我们把系列(series)对应到表行,那么每一行就是“维度(dimension)”,每一列就是数据项(item)。维度可以有单独的名字,便于在图表中显示。维度名(dimensionname)可以定义在dataset的第一行(或者第一列)。例如上面的例子中,'MatchaLatte'、'MilkTea'、'CheeseCocoa'、'WalnutBrownie'就是维度名。从第二行开始,才是正式的数据。dataset.source
中第一行(列)到底包含不包含维度名,Echarts
默认会自动探测。当然也可以设置dataset.sourceHeader:true显示声明第一行(列)就是维度,或者dataset.sourceHeader:false表明第一行(列)开始就直接是数据。维度的定义,也可以使用单独的dataset.dimensions
或者series.dimensions
来定义,这样可以同时指定维度名,和维度的类型(dimensiontype)。大多数情况下,我们并不需要去设置维度类型,因为会自动判断。但是如果数据为空而导致判断不足够准确时,可以手动设置维度类型。维度类型(dimensiontype)可以取如表3-3所示的类型。3.5.2维度【示例3-8】使用dataset.dimensions绘制折线图。(1)示例代码如右图所示:(2)示例的运行结果如图3-29所示。1.series.encode基本结构1)冒号左边是坐标轴、组件等特定名称,如x、y、tooltip等。2)冒号右边是维度名称或序号(从0开始计数)。3)可以用数组指定多个维度。2.series.encode的默认值当series.encode
并没有指定时,Echarts
针对最常见直角坐标系中的图表(折线图、柱形图、散点图、K线图等)、饼图、漏斗图,会采用一些默认的映射规则。规则为:1)在坐标系中(如直角坐标系、极坐标系等)(1)如果有类目轴,则将第一列(行)映射到这个轴上,后续每一列(行)对应一个系列。(2)如果没有类目轴,假如坐标系有两个轴(例如直角坐标系的XY轴),则每两列对应一个系列,这两列分别映射到这两个轴上。2)如果没有坐标系(如饼图)取第一列(行)为名字,第二列(行)为数值(如果只有一列,则取第一列为数值)。3.5.3数据到图形的映射3.5.3数据到图形的映射【示例3-9】使用series.encode绘制带legend和tooltip的折线图。(1)示例代码如右图所示:
(2)示例的运行结果如图3-30所示。3.5.4视觉通道的映射我们可以使用visualMap
组件进行视觉通道的映射。视觉元素如表3-4所示。visualMap
组件可以定义多个,从而可以同时对数据中的多个维度进行视觉映射。visualMap
组件可以定义多个,从而可以同时对数据中的多个维度进行视觉映射。3.5.4视觉通道的映射【示例3-10】通过visualMap实现数据通道映射。1)示例代码如右图所示:2)示例的运行结果如图3-31所示。3.5.5交互联动目前并非所有图表都支持dataset。支持dataset的图表有:line、bar、pie、scatter、effectScatter、parallel、candlestick、map、funnel、custom。后续会有更多的图表进行支持。最后,给出一个示例,多个图表共享一个dataset,并带有联动交互。【示例3-11】使用dataset的二维数组图表绘制。(1)示例代码如下:(2)示例运行结果如图3-32所示,饼图数据和区域会随着鼠标在折线图上位置的变化而变化。3.5.5交互联动【示例3-10】使用dataset的二维数组图表绘制。(2)示例运行结果如图3-32所示,饼图数据和区域会随着鼠标在折线图上位置的变化而变化。Echarts
交互组件3.63.6Echarts
交互组件Echarts
提供了很多交互组件,例如:图例组件legend、标题组件title、视觉映射组件visualMap、数据区域缩放组件dataZoom、时间线组件timeline。dataZoom
组件可以实现通过鼠标滚轮滚动,放大缩小图表的功能。1.拖动dataZoom数据区组件dataZoom
组件可以实现通过拖动dataZoom组件,实现缩放和平移图表的数据窗口功能。默认下dataZoom控制x轴,即对x轴进行数据窗口平移操作。dataZoom组件有inside和slider两种类型,分别表示有滑动块的和内置的。在如下的示例中通过拖动dataZoom组件控制x轴,即对x轴进行数据窗口缩放和数据窗口平移操作。【示例3-12】拖动dataZoom组件控制x轴,实现数据区域的平移和缩放。1)示例代码如下:3.6Echarts
交互组件【示例3-12】拖动dataZoom组件控制x轴,实现数据区域的平移和缩放。(2)示例运行结果如图3-33所示。3.6Echarts
交互组件2.在数据区滚动鼠标上面的实例只能拖动dataZoom
组件来缩小或放大图表。如果想在坐标系内进行拖动,以及用鼠标滚轮(或移动触屏上的两指滑动)进行缩放,那么需要再加上一个inside型的dataZoom
组件。在以上实例基础上我们再增加type:'inside'的配置信息,代码下所示,用户不仅可以拖动dataZoom的滑条,也可以在图表区域内滚动鼠标滚轮,来实现同样的功能。Echarts
响应式3.7Echarts图表显示在用户指定高宽的DOM节点(容器)中。如果需要在PC和移动设备上都能够很好的展示图表的内容,实现响应式的设计,为了解决这个问题,Echarts完善了组件的定位设置,并且实现了类似CSSMediaQuery的自适应能力。3.7.1Echarts组件的定位和布局大部分组件和系列会遵循两种定位方式。1.left/right/top/bottom/width/height定位方式这六个量中,每个量都可以是绝对值、或者百分比、或者位置描述。分别描述如下1)绝对值:单位是浏览器像素(px),用number形式书写(不写单位)。例如{left:23,height:400}。2)百分比:表示占DOM容器高宽的百分之多少,用string形式书写。例如{right:'30%',bottom:'40%'}。3)位置描述:可以设置left:'center',表示水平居中;可以设置top:'middle',表示垂直居中。2.center/radius定位方式在自适应容器大小时,百分比设置是很有用的。1)center:是一个数组,表示[x,y],其中,x、y可以是绝对值或者百分比,含义和前述相同。2)radius:是一个数组,表示[内半径,外半径],其中,内外半径可以是绝对值或者百分比,含义和前述相同。在自适应容器大小时,百分比设置是很有用的。3.横向(horizontal)和纵向(vertical)Echarts外观狭长型的组件(如legend、visualMap、dataZoom、timeline等),大多提供了横向布局或纵向布局的选择。例如,在细长的移动端屏幕上,可能适合使用纵向布局;在PC宽屏上,可能适合使用横向布局。横纵向布局的设置,一般在组件或者系列的orient或者layout配置项上,设置为'horizontal'或者'vertical'。3.7.2MediaQuery自适应MediaQuery提供了组件随着容器尺寸改变而改变的能力。如下例子,可尝试拖动右下角的圆点,随着尺寸变化,legend和系列会自动改变布局位置和方式,如图3-27所示。【示例3-13】组件会随着屏幕尺寸变化,legend和系列会自动改变布局位置和方式。1)示例代码如下所示:3.7.2MediaQuery自适应MediaQuery提供了组件随着容器尺寸改变而改变的能力。如下例子,可尝试拖动右下角的圆点,随着尺寸变化,legend和系列会自动改变布局位置和方式,如图3-27所示。【示例3-13】组件会随着屏幕尺寸变化,legend和系列会自动改变布局位置和方式。(2)实例运行结果如图3-34所示,其中图3-34(a)为默认规则下图表和图例布局;图3-34(b)长宽比大于或等于1时图表和图例布局;图3-34(c)长宽比小于或等于1时图表和图例布局;图3-34(d)为窗口最大宽度小于500时图表和图例布局。图3-34图表自适应窗体大小3.7.2MediaQuery自适应对于图表、legend等元素的自适应实现,需要在option中设置MediaQuery必须遵循如下格式,下面的例子中,baseOption、以及media的每个option都是原子option,即包含各组件、系列定义的option。而由原子option组合成的整个option,我们称为复合option。我们通常使用baseOption来设置原子option;此外,满足了某个query条件时,对应的option会被使用chart.mergeOption()来merge进去。3.7.2MediaQuery自适应下面介绍MediaQuery自适应的各个参数的设置和注意事项。1.queryquery现在支持三个属性:width、height、aspectRatio(长宽比)。每个属性都可以加上min或max前缀。比如,minWidth:200表示大于或等于200px宽度。两个属性一起写表示“并且”,比如:{minWidth:200,maxHeight:300}表示大于或等于200px宽度,并且小于或等于300px高度』。基本的query设置如下:2.optionmedia中的option既然是原子的option,理论上可以写任何option的配置项。但是一般我们只写和布局定位相关的部分,例如截取上面例子中的一部分queryoption:3.7.2MediaQuery自适应3.多个query被满足时的优先级可以有多个query同时被满足,都会被mergeOption,定义在后面的query的优先级更高,即定义在后面的会被merge(合并)。4.默认query如果media中有某项不写query,则表示默认值,即所有规则都不满足时,采纳这个option。5.容器大小实时变化时的注意事项在多数情况下,并不需要容器DOM节点任意随着拖拽变化大小,而是只是根据不同终端设置几个典型尺寸。但是如果容器DOM节点需要能任意随着拖拽变化大小,那么目前使用时需要注意:某个配置项,如果在某一个queryoption中出现,那么在其他queryoption中也必须出现,否则不能够回归到原来的状态;但是left、right、top、bottom、width和height不受这个限制。6.复合option中的media不支持merge也就是说,当第二(或三、四、五...)次chart.setOption(rawOption)时,如果rawOption
是复合option(即包含media列表),那么新的rawOption.media
列表不会和旧的media列表进行merge,而是简单替代。当然,baseOption
仍然会正常和旧的option进行merge。其实,很少有场景需要使用复合option来多次setOption,推荐的方法是,使用mediaQuery时,第一次setOption使用复合option,后面setOption时仅使用原子option,也就是仅仅用setOption来改变baseOption。Echarts
数据视觉映射3.8数据可视化是数据到视觉元素的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道)。ApacheEchartsTM的每种图表本身就内置了这种映射过程,比如折线图把数据映射到『线』,柱形图把数据映射到『长度』。一些更复杂的图表,如graph、事件河流图、treemap也都会做出他们内置的映射。此外,Echarts还提供了visualMap组件来提供通用的视觉映射。visualMap组件中可以使用的视觉元素有:图形类别(symbol)、图形大小(symbolSize)、颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、颜色明暗度(colorLightness)、颜色饱和(colorSaturation)、色调(colorHue)。下面对visualMap组件的使用方式进行简要的介绍。3.8.1数据和维度Echarts中的数据,一般存放于series.data
中。根据图表类型不同,数据的具体形式也可能有些许差异。比如可能是线性表、树、图等。但他们都有个共性:都是数据项(dataItem)的集合。每个数据项含有数据值(value)和其他信息(如果需要的话)。每个数据值,可以是单一的数值(一维)或者一个数组(多维)。例如,series.data
最常见的形式,是线性表,即一个普通数组,如右图所示的代码:在图表中,往往默认把value的前一两个维度进行映射,比如取第一个维度映射到x轴,取第二个维度映射到y轴。如果想要把更多的维度展现出来,可以借助visualMap
。3.8.2visualMap组件visualMap组件定义了把数据的指定维度映射到对应的视觉元素上。visualMap组件可以定义多个,从而可以同时对数据中的多个维度进行视觉映射。visualMap组件可以定义为分段型(visualMapPiecewise)或连续型(visualMapContinuous),通过type来区分。Echarts的视觉映射组件分为连续型(visualMapContinuous)与分段型(visualMapPiecewise)。连续型的意思是,进行视觉映射的数据维度是连续的数值;而分段型则是数据被分成了多段或者是离散型的数据。3.8.2visualMap组件1.连续型视觉映射连续型视觉映射通过指定最大值、最小值,就可以确定视觉映射的范围。其中,visualMap.inRange表示在数据映射范围内的数据采用的样式;而visualMap.outOfRange则指定了超出映射范围外的数据的样式。visualMap.dimension则指定了将数据的哪个维度做视觉映射。3.8.2visualMap组件2.分段型视觉映射分段型视觉映射组件有3种模式。(1)连续型数据平均分段:依据visualMap-piecewise.splitNumber
来自动平均分割成若干块。(2)连续型数据自定义分段:依据visualMap-piecewise.pieces
来定义每块范围。(3)离散数据(类别性数据):类别定义在visualMap-piecewise.categories
中。使用分段型视觉映射时,需要将type设为'piecewise',并且将上面的三个配置项选其一配置即可,其他配置项类似连续型视觉映射。感谢观看第4章基于Python数据可视化本章重点◎了解Python基本语法◎理解Python编译器Anaconda的下载和安装◎掌握Python可视化库的安装◎掌握基于Python的Matplotlib数据可视化函数的使用方法◎掌握基于Python的Seaborn数据可视化函数的使用方法◎掌握基于Python的Bokeh数据可视化函数的使用方法目录CONTENTSPython数据可视化基础4.1Matplotlib可视化4.2Seaborn可视化4.3Bokeh可视化4.4Python数据可视化基础4.1由于不断生成大量数据,迫切需要开发人员能够将数据有效又有趣的可视化呈现,数据可视化也能让人们更直观的传递数据所要表达的信息。本章将增进你的数据探索能力,掌握使用Python创建交互式数据可视化时需要了解的全部内容。4.1.1Python可视化编译器Python的编译器有十余种,可以用在不同的开发项目中,如Pycharm多用于Web开发,Anaconda多用于数据分析,其集成的JupyterNotebook更是Windows平台下数据分析者的不二之选。1.安装AnacondaAnaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,Anaconda而且跨平台的,有Windows、macOS和Linux多个版本,用户可以在Anaconda官网下载与电脑系统对应版本,一路默认安装即可。2.运行JupyterNotebook安装了Anaconda发行版时已经自动为你安装了JupyterNotebook,JupyterNotebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果,如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。Jupyter运行步骤如下:(1)单击“开始”菜单AnacondaJupyterNotebook,如图4-1所示。图4-1启动JupyterNotebook服务4.1.1Python可视化编译器(2)打开JupyterNotebook服务开启之后,在如图4-2所示的JupyterNotebook网页上,单击new→Python3,创建一个新的JupyterNotebook。(3)新建python文件完毕,在如图4-3所示的页面中心的以In开头的长方形框中输入代码,单击Run按钮即可。本章节所有的示例都是在Windows系统Anaconda下安装可视化库,在Anaconda的JupyterNotebook页面里导入和使用可视化库,生成各类可视化图表。4.1.2Python数据处理基础Python借助外在的包和模块可以实现数据分析与可视化,NumPy和Pandas包用于分析数据的性能;Matplotlib、Seaborn、Bokeh等包可实现数据结果的可视化。1.Python模块与包在Python中,为编写可维护的代码,通常将多个函数分组后分别放到不同的文件里,每个文件包含的代码就相对较少,一个.py文件就称之为一个模块(module),使用模块不仅可以大大提高代码的可维护性;为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(package),一个包就是一个文件夹,模块和包的导入与使用方法类似。使用包之前,需要先将这些包导入,Python中使用import语句可以导入包或包中的模块,Python中可以使用如下的4种方法导入包或包中的模块。(1)importpackage:直接导入包,也可使用importpackage.module的方式实现导入包中模块的功能。(2)importpackageasx:将导入的包重命名为x,该种导入方法在包名较长时使用。(3)frompackageimportmoduleorsubpackageorobject:从一个包中导入模块、子包或对象。(4)frompackageimport*:导入包中的全部模块。4.1.2Python数据处理基础2.Python数据类型与转换下面简单介绍Python的列表、字典、NumpyArray数组和PandasDataFrame二维表格数据格式,并以Bokeh绘图为例展示4种数据类型的在数据可视化中的使用。(1)List—列表List是Python常用的数据格式,在绘制散点图或直线等基本图形时,可以直接用其作为x,y轴的坐标。在,使用列表作为x轴和y轴数据来绘制散点图的代码如下所示,运行结果如图4-4所示。4.1.2Python数据处理基础(2)Dict—字典Dict是Python常用的数据格式,在Bokeh中可以通过访向其键值,直接调用列表;也可以将其直接转化为Bokeh专属的数据格式ColumnDataSource,在V1.0版本之后直接在绘图时定义source参数为字典,使用字典作为绘制散点图的数据源的代码如下所示,运行结果如图4-5所示。4.1.2Python数据处理基础(3)NumpyArrays-Numpy数组NumPyArrays(数组)是科学计算常用的数据格式,在Bokeh中其基本等效于List(列表),直接进行坐标复制。使用列表创建NumpyArray后,作为绘制散点图的x轴和y轴数据的代码如下所示,运行结果如图4-6所示。4.1.2Python数据处理基础(4)PandasDataFrame—数据帧Pandas是科学分析最常用库,其专属的数据格式DataFrame可以在绘图时直接赋值给source,进而引用列名,完成坐标的定义。使用PandasDataFrame的二维表格数结构据作为绘制散点图的x轴和y轴数据的数据源,生成散点图的代码如下所示,运行结果如图4-7所示。4.1.3Python可视化库简介Python中有两个专用于可视化的库Matplotlib和Seaborn能让我们很容易的完成任务。本章首先分析如何使用非交互式数据可视化库Matplotlib和Seaborn绘制各种图。将研究不同类型的可视化,对它们进行比较,并了解如何选择一种特定类型的可视化来满足你的需求。对各种非交互式数据可视化库有所了解之后,你将学习创建直观且有说服力的数据可视化的有关原则,并使用Bokeh和Plotly将你绘制的图转化为吸引人的故事。Python拥有众多的第三方库使我们可以方便地进行一些数据的可视化操作。目前很多库的可视化应用都是建立在Matplotlib的基础上的。本章重点介绍如下的三个Python可视化库。1.MatplotlibMatplotlib是一个Python2维绘图库,已经成为python中公认的数据可视化工具,通过Matplotlib你可以很轻松地画一些或简单或复杂地图形,几行代码即可生成线图、直方图、功率谱、条形图、错误图、散点图等。对于一些简单的绘图,特别是与IPython结合使用时,pyplot模块提供了一个Matlab接口。你可以通过面向对象的接口或通过一些Matlab的函数来更改控制行样式、字体属性、轴属性等。2.Seaborn该Python库能够创建富含信息量和美观的统计图形。具有多种特性,比如内置主题、调色板、可以可视化单变量数据、双变量数据,线性回归数据和数据矩阵以及统计型时序数据等,能让我们创建复杂的可视化图形。Seaborn是基于Matplotlib产生的一个模块,专攻于统计可视化,可以和pandas进行无缝链接,使初学者更容易上手。相对于Matplotlib,Seaborn语法更简洁,两者关系类似于Numpy和Pandas之间的关系。3.BokehBokeh是一个Python交互式可视化库,支持现代化web浏览器展示(图表可以输出为JSON对象,HTML文档或者可交互的网络应用)。它提供风格优雅、简洁的D3.js的图形化样式,并将此功能扩展到高性能交互的数据集,数据流上。使用Bokeh可以快速便捷地创建交互式绘图、仪表板和数据应用程序等。Bokeh能与NumPy、Pandas、Blaze等大部分数组或表格式的数据结构完美结合。Matplotlib可视化4.2如果有配置Anaconda的话使用“piplist”命令查看Matplotlib库的详情(推荐),则Anaconda会自带Matplotlib库,无须再次安装。Matplotlib库是Python中绘制二维、三维图表的数据可视化工具。它的主要特点如下。(1)使用简单绘图语句实现复杂绘图效果;(2)以交互式操作实现渐趋精细的图形效果;(3)使用嵌入式的LaTeX输出具有印刷级别的图表、科学表达式和符号文本;(4)对图表的组成元素实现精细化控制。4.2.1使用函数绘制Matplotlib的图表组成元素1.绘制Matplotlib图表组成元素的主要函数首先需要了解Matplotlib是如何组织内容的。在一个图形输出窗口中,底层是一个Figure实例,我们通常称之为画布,包含一些可见和不可见的元素。在画布上的图形,就是Axes实例,Axes实例几乎包含了我们要介绍的Matplotlib组成元素,如坐标轴、刻度、标签、线和标记等。Axes实例有x轴和y轴属性,也就是说,可以使用Axes.xaxis和Axes.yaxis来控制x轴和y轴的相关组成元素,如刻度线、刻度标签、刻度线定位器和刻度标签格式器。Matplotlib为我们准备了快速入门通道,那就是matplotib.pyplot模块的API,通过调用API中的函数,我们就可以快速了解应该如何绘制这些组成元素了,绘制Matplotlib图表组成元素的主要函数如表4-1所示。4.2.1使用函数绘制Matplotlib的图表组成元素2.准备数据1)导入第三方包NumPy和快速绘图模块pyplot,其中科学计算包NumPy是Matplotlib库的基础,也就是说,matplotib
库是建立在NumPy基础之上的Python绘图库。2)定义一些完成绘制图所需要的数据了,代码如下:其中,函数linspac(.10)是表示在0.5至3.5之间均匀地取100个数,函数randn(100)表示在标准正态分布中随机地取100个数。4.2.1使用函数绘制Matplotlib的图表组成元素3.绘制Matplotlib图表组成元素的函数用法(1)plt.plot()函数函数语句格式:plt.plot(x,y,ls=“-”,lw=2,label=‘plotfigure’)函数功能:展现变量的趋势变化。参数说明如下。x和y:x轴和y轴上的数值;ls:折线图的线条风格;lw:折线图的线条宽度;label:标记图形内容的标签文本。代码展示和运行结果,如图4-8所示。(2)scatter函数函数语句格式:plt.scatter(x,y,s=10,c="r",label="plotscatter")函数功能:寻找变量之间的关系。参数说明如下。x和y:x轴和y轴上的数值;c:散点图的颜色;s:散点的大小;marker:散点的样式(默认:marker=“o”圆形,marker=“s”方形等);label:标记图形内容的标签文本。代码展示和运行结果,如图4-9所示。4.2.1使用函数绘制Matplotlib的图表组成元素3.绘制Matplotlib图表组成元素的函数用法(3)xlim()和ylim()函数函数语句格式:plt.xlim(xmin,xmax)plt.ylim(ymin,ymax)
函数功能:设置x,y轴的数值显示范围。参数说明如下。xmin和xmax:x轴上的最小值和最大值;ymin和ymax:y轴上的最小值和最大值。代码展示和运行结果,如图4-10所示。(4)xlabel()和ylabel()函数函数语句格式:plt.xlabel(string)plt.ylabel(string)函数功能:设置x和y轴的标签文本。参数说明如下。string:标签的文本内容。代码展示和运行结果,如图4-11所示。4.2.1使用函数绘制Matplotlib的图表组成元素3.绘制Matplotlib图表组成元素的函数用法(5)grid()函数函数语句格式:ply.grid(linestyle=":",color="r")函数功能:绘制刻度线的网格线。参数说明如下。linestyle:网格线的线条风格;color:网格线的线条颜色。代码展示和运行结果,如图4-12所示。(6)axhline()和axvline()函数函数语句格式:plt.axhline(y=0,c="r",ls="--",lw=2)plt.axvline(y=0,c="r",ls="--",lw=2)函数功能:绘制平行于x轴(y轴)的水平(竖直)参考线。参数说明如下。y:水平参考线的出发点;c:参考线的线条颜色;ls:参考线的线条风格;lw:参考线的线条宽度。代码展示和运行结果,如图4-13所示。4.2.1使用函数绘制Matplotlib的图表组成元素3.绘制Matplotlib图表组成元素的函数用法(7)avxspan()和axhspan()函数函数语句格式:plt.avxspan(xmin=1,xmax=2,facecolor="y",alpha=0.3)plt.axhspan(xmin=1,xmax=2,facecolor="y",alpha=0.3)函数功能:绘制垂直于x轴(y轴)的参考区域。参数说明如下。xmin:参考区域的起始位置;xmax:参考区域的终止位置;facecolor:参考区域的填充颜色;alpha:参考区域的填充颜色的透明度。代码展示和运行结果,如图4-14所示。(8)annotate()函数函数语句格式:plt.annotate(string,xy=(np.pi/2,1.0),xytext=((np.pi/2)+0.15,1.5),weight="bold",color="b“,arrowprops=dict(arrowstyle="->",,connectionstyle="arc3",color="b"))函数功能:添加图形内容细节的指向型注释文本。参数说明如下。string:图形内容的注释文本;xy:被注释图形内容的位置坐标;xytext:注释文本的位置坐标;weight:注释文本的字体粗细风格;color:注释文本的字体颜色;arrowprops:指示被注释内容的箭头的属性字典。代码展示和运行结果,如图4-15所示。4.2.1使用函数绘制Matplotlib的图表组成元素3.绘制Matplotlib图表组成元素的函数用法(9)text()函数函数语句格式:plt.text(x,y,string,weight="bold",color="b")函数功能:添加图形内容细节的无指向性注释文本。参数说明如下。x和y:注释文本内容所在位置的横坐标和纵坐标;string:注释文本内容;weight:注释文本内容的粗细风格;color:注释文本内容的字体颜色。代码展示和运行结果,如图4-16所示。(10)title()函数函数语句格式:plt.title(string)函数功能:添加图形内容的标题。参数说明如下。string:图形内容的标题文本。代码展示和运行结果,如图4-17所示。4.2.1使用函数绘制Matplotlib的图表组成元素3.绘制Matplotlib图表组成元素的函数用法(11)legend()函数函数语句格式:plt.legend(loc="lowerleft")
函数功能:标示不同图形的文本标签图例。参数说明如下。loc:图例在图中的地理位置。代码展示和运行结果,如图4-18所示,其中plt.legend(loc=“best”),表示图例位于最佳位置。图4-18标示图形文本标签图例位置在上一节中,我们介绍了属于统计图形范围的折线图和散点图。接下来会讲解一些大家比较熟悉却又经常混淆的统计图形,掌握这些统计图形可以让读者对数据可视化有一个深入理解,并正确使用。我们从基础统计图形函数的功能、调用签名、参数说明和调用展示四个层面来讲解统计函数的使用方法和参数概念。4.2.2使用统计函数绘制简单图形4.2.2使用统计函数绘制简单图形1.bar()函数函数语句格式:函数功能:用于绘制柱形图。Bar()参数表,如表4-2所示。代码展示和运行结果,如图4-19所示,通过第12-13行代码,在每个柱形的顶端位置按照温度的格式显示该柱形对应的温度。plt.bar(x,y,align='',color='b',edgecolor='',tick_label=['item1','item2',…]),alpha=0.8,ls='-',lw=2,width=0.8,hatch='',label=string))4.2.2使用统计函数绘制简单图形2.barh()函数函数语句格式:
函数功能:用于绘制条形图。参数说明:barh的第一个参数是y轴上标签的位置(或者值),第二个参数是我们要展示的数据。此时需要用y参数而不是x来控制柱体的“高度”,相应的数字标签的坐标也需要重新设置,其余的参数和前面一致。代码展示和运行结果,如图4-20所示。plt.barh(x,y,align='',color='b',edgecolor='',tick_label=['item1','item2',…]),alpha=0.8,ls='-',lw=2,width=0.8,hatch='',label=string))4.2.2使用统计函数绘制简单图形3.hist()函数
函数语句格式:函数功能:用于柱形图描述的是离散型数据的分布,柱体之间有空隙。直方图则用来展示连续型数据的分布,柱体之间没有空隙。
hist()参数表,如表4-3所示。hist(x,bins=None,range=None,density=None,weights=None,cumulative=F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026淄博疾控面试题及答案
- 人工智能安全产业人才基地建设典型场景示例
- 感恩教育主题班会(完美)课件
- 网络直播平台负责人年度述职报告
- 护理输血并发症
- 2026年下半年信息系统项目管理师考试真题及答案
- 建筑装饰企业维修工检修维修安全操作规程
- 防溺安全大家知
- 机械加工安全警示教育
- 非金属矿山车工定期维护安全操作规程
- 2026年度全国保密教育线上培训题库(选择+判断)及参考答案
- 妊娠合并地中海贫血的护理查房
- 阿仑膦酸钠临床推广幻灯20090310
- CECA/GC1-2023年建设项目投资估算编审规程
- 铸造企业现场管理类隐患排查治理清单
- NB-T 10593-2021 风电场无人机叶片检测技术规范
- GB/T 35260-2017公共汽车维护技术规范
- GA/T 950-2019防弹材料及产品V50试验方法
- 2023年山西省方山县示范区文化和旅游集团有限公司招聘笔试题库及答案解析
- 中国农业银行现金管理项下委托贷款协议范本-
- 人民医院乔迁开业盛典活动方案
评论
0/150
提交评论