可视化 | Echarts基础&异步加载数据&交互组件&数据集
发布日期:2021-05-10 06:27:22 浏览次数:23 分类:原创文章

本文共 23673 字,大约阅读时间需要 78 分钟。



目录














1. ECharts 简介


在这里插入图片描述


ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求,遵循 Apache-2.0 开源协议,免费商用,ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可展示各类图表。


ECharts 特性:



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


  • 多种数据格式无需转换直接使用: 内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,此外还支持输入 TypedArray 格式的数据。


  • 千万数据的前端展现: 通过增量渲染技术(4.0+),配合各种细致的优化,ECharts 能够展现千万级的数据量。


  • 移动端优化: 针对移动端交互做了细致的优化,例如移动端小屏上适于用手指在坐标系中进行缩放、平移。 PC 端也可以用鼠标在图中进行缩放(用鼠标滚轮)、平移等。


  • 多渲染方案,跨平台使用: 支持以 Canvas、SVG(4.0+)、VML 的形式渲染图表。


  • 深度的交互式数据探索: 提供了 图例、视觉映射、数据区域缩放、tooltip、数据刷选等开箱即用的交互组件,可以对数据进行多维度数据筛取、视图缩放、展示细节等交互操作。


  • 多维数据的支持以及丰富的视觉编码手段: 对于传统的散点图等,传入的数据也可以是多个维度的。


  • 动态数据: 数据的改变驱动图表展现的改变。


  • 绚丽的特效: 针对线数据,点数据等地理数据的可视化提供了吸引眼球的特效。


  • 通过 GL 实现更多更强大绚丽的三维可视化: 在 VR,大屏场景里实现三维的可视化效果。


  • 无障碍访问(4.0+): 支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问!



2. ECharts 安装


ECharts安装方式有多种:



  • 直接下载 echarts.min.js 并用


    <!-- 引入 echarts.js -->    <script src="lib/echarts.js"></script>


  • CDN 方法安装


 <!-- 引入 echarts.js -->    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>


  • NPM 方法
    打开cmd命令输入下面命令,或者打开Webstorm中的终端,进入当前项目的目录下进行安装,我这里用Webstorm终端


cnpm install echarts --save

在这里插入图片描述
安装完成后 ECharts 和 zrender 会放在 node_modules 目录下,可以直接在项目代码中使用 require(‘echarts’) 来使用。
如下:
在这里插入图片描述


var echarts = require('echarts'); // 基于准备好的dom,初始化echarts实例var testChart = echarts.init(document.getElementById('main'));// 绘制图表testChart.setOption({
title: {
text: 'ECharts 入门演示' }, tooltip: {
}, xAxis: {
data: ['java', 'python', 'php', 'c语言', 'javascript', 'c++'] }, yAxis: {
}, series: [{
name: '排名', type: 'bar', data: [2, 1, 5, 3, 6, 7] }]});

3. ECharts 配置语法



  • 第一步:创建 HTML 页面
    创建一个 HTML 页面,引入 echarts.min.js:


<html><head>    <meta charset="utf-8">    <title>第一个 ECharts 实例</title>    <!-- 引入 echarts.js -->    <script src="lib/echarts.js"></script></head><body></body></html>


  • 第二步: 为 ECharts 准备一个具备高宽的 DOM 容器


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


  • 第三步: 设置配置信息
    ECharts 库使用json 格式来配置:


echarts.init(document.getElementById('main')).setOption(option);

其中 option 表示使用 json 数据格式的配置来绘制图表:


标题
为图表配置标题:


    title: {
text: 'ECharts 入门演示' }

提示信息
配置提示信息:


tooltip: {
},

图例组件
图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。


legend: {
data: [{
name: 'iphone区', // 强制设置图形为圆。 icon: 'circle', // 设置文本为红色 textStyle: {
color: 'red' } }]}

X 轴
配置要在 X 轴显示的项:


    xAxis: {
data: ['java', 'python', 'php', 'c语言', 'javascript', 'c++'] }

Y 轴
配置要在 Y 轴显示的项:


yAxis: {
}

系列列表
每个系列通过 type 决定自己的图表类型:


series: [{
name: '排名', type: 'bar', data: [2, 1, 5, 3, 6, 7] }]

每个系列通过 type 决定图表的类型,具体如下:



  • type: ‘bar’:柱状/条形图

  • type: ‘line’:折线/面积图

  • type: ‘pie’:饼图

  • type: ‘scatter’:散点(气泡)图

  • type: ‘effectScatter’:带有涟漪特效动画的散点(气泡)

  • type: ‘radar’:雷达图

  • type: ‘tree’:树型图

  • type: ‘treemap’:树型图

  • type: ‘sunburst’:旭日图

  • type: ‘boxplot’:箱形图

  • type: ‘candlestick’:K线图

  • type: ‘heatmap’:热力图

  • type: ‘map’:地图

  • type: ‘parallel’:平行坐标系的系列

  • type: ‘lines’:线图

  • type: ‘graph’:关系图

  • type: ‘sankey’:桑基图

  • type: ‘funnel’:漏斗图

  • type: ‘gauge’:仪表盘

  • type: ‘pictorialBar’:象形柱图

  • type: ‘themeRiver’:主题河流

  • type: ‘custom’:自定义系列


例子:


<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>第一个 ECharts 实例</title>    <!-- 引入 echarts.js -->    <script src="lib/echarts.js"></script></head><body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width: 800px;height:500px;"></div><script type="text/javascript">    // 基于准备好的dom,初始化echarts实例    var testChart = echarts.init(document.getElementById('main'));    // 绘制图表    testChart.setOption({
title: {
text: 'ECharts 入门演示' }, tooltip: {
}, xAxis: {
data: ['java', 'python', 'php', 'c语言', 'javascript', 'c++'] }, yAxis: {
}, series: [{
name: '排名', type: 'line', data: [2, 1, 5, 3, 6, 7] }] });</script></body></html>

在这里插入图片描述


4. ECharts 图饼


饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目因为不在直角坐标系上,所以也不需要 xAxis,yAxis


<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>ECharts 图饼</title>    <!-- 引入 echarts.js -->    <script src="lib/echarts.js"></script></head><body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width: 600px;height:400px;"></div><script type="text/javascript">    // 基于准备好的dom,初始化echarts实例    var testChart = echarts.init(document.getElementById('main'));    testChart.setOption({
series : [ {
name: '使用比例', type: 'pie', // 设置图表类型为饼图 radius: '55%', // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。 data:[ // 数据数组,name 为数据项名称,value 为数据项值 {
value:3, name:'java'}, {
value:3, name:'python'}, {
value:2, name:'php'}, {
value:1, name:'javascript'}, {
value:1, name:'c#'} ] } ] })</script></body></html>

在这里插入图片描述


5. ECharts 样式设置


ECharts 可以通过样式设置来改变图形元素或者文字的颜色、明暗、大小等。


颜色主题
ECharts4 开始,除了默认主题外,内置了两套主题,分别为 light 和 dark。
使用方式如下:


var textChart = echarts.init(dom, 'light');或者var textChart = echarts.init(dom, 'dark');

例子:


<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>ECharts 图饼</title>    <!-- 引入 echarts.js -->    <script src="lib/echarts.js"></script></head><body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width: 600px;height:400px;"></div><script type="text/javascript">    // 基于准备好的dom,初始化echarts实例    var testChart =  echarts.init(document.getElementById('main'), 'dark'); // dark 可修改为 light    testChart.setOption({
series : [ {
name: '使用比例', type: 'pie', // 设置图表类型为饼图 radius: '55%', // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。 data:[ // 数据数组,name 为数据项名称,value 为数据项值 {
value:3, name:'java'}, {
value:3, name:'python'}, {
value:2, name:'php'}, {
value:1, name:'javascript'}, {
value:1, name:'c#'} ] } ] })</script></body></html>

在这里插入图片描述
主题
可以在官方的 选择自己喜欢的主题下载,官方主题下载提供了 JS 版本和 JSON 版本。
在这里插入图片描述


如果你使用 JS 版本,可以将 JS 主题代码保存一个 主题名.js 文件,例如:westeros.js然后在 HTML 中引用该文件,最后在代码中使用该主题。


<!-- 引入主题 --><script src="lib/westeros.js"></script>...// HTML 引入 westeros.js 文件后,在初始化的时候调用var testChart = echarts.init(dom, 'westeros');// ...

如果主题保存为 JSON 文件,那么可以自行加载和注册。


调色盘
调色盘可以在 option 中设置。
调色盘给定了一组颜色,图形、系列会自动从其中选择颜色,可以设置全局的调色盘,也可以设置系列自己专属的调色盘。


option = {
// 全局调色盘。 color: ['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83', '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3'], series: [{
type: 'bar', // 此系列自己的调色盘。 color: ['#dd6b66','#759aa0','#e69d87','#8dc1a9','#ea7e53','#eedd78','#73a373','#73b9bc','#7289ab', '#91ca8c','#f49f42'], ... }, {
type: 'pie', // 此系列自己的调色盘。 color: ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C','#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'], ... }]}

直接的样式设置 itemStyle, lineStyle, areaStyle, label, …
直接的样式设置是比较常用设置方式。ECharts 中 的option可以设置 itemStyle、lineStyle、areaStyle、label (图形元素的颜色、线宽、点的大小、标签的文字、标签的样式)等等。


高亮的样式:emphasis
在鼠标悬浮到图形元素上时,一般会出现高亮的样式。默认情况下,高亮的样式是根据普通样式自动生成的。
如果要自定义高亮样式可以通过emphasis 属性来定制:


// 高亮样式。emphasis: {
itemStyle: {
// 高亮时点的颜色 color: 'yellow' }, label: {
show: true, // 高亮时标签的文字 formatter: '我是高亮时显示的标签内容' }},

例子:


<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>ECharts 图饼</title>    <!-- 引入 echarts.js -->    <script src="lib/echarts.js"></script></head><body><!-- 为ECharts准备一个具备大小(宽高)的Dom --><div id="main" style="width: 600px;height:400px;"></div><script type="text/javascript">    // 基于准备好的dom,初始化echarts实例    var testChart =  echarts.init(document.getElementById('main')); // dark 可尝试修改为 light    testChart.setOption({
series : [ {
name: '使用比例', type: 'pie', // 设置图表类型为饼图 radius: '55%', // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度// // 高亮样式。 emphasis: {
itemStyle: {
// 高亮时点的颜色 color: 'yellow' }, label: {
show: true, // 高亮时标签的文字 formatter: '我是高亮时显示的标签内容' } }, data:[ // 数据数组,name 为数据项名称,value 为数据项值 {
value:3, name:'java'}, {
value:3, name:'python'}, {
value:2, name:'php'}, {
value:1, name:'javascript'}, {
value:1, name:'c#'} ] } ] })</script></body></html>

结果:
在这里插入图片描述


6. ECharts 异步加载数据


ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项即可。 json 数据: 例如:


{
data:[ // 数据数组,name 为数据项名称,value 为数据项值 {
value:3, name:'java'}, {
value:3, name:'python'}, {
value:2, name:'php'}, {
value:1, name:'javascript'}, {
value:1, name:'c#'} ]}

数据的动态更新


ECharts 由数据驱动,数据的改变驱动图表展现的改变,因此动态数据的实现也变得异常简单。所有数据的更新都通过 setOption 实现,只需要定时获取数据,setOption 填入数据,而不用考虑数据到底产生了那些变化,ECharts 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。


例子:


 var base = +new Date(2020, 7, 7);		var oneDay = 24 * 3600 * 1000;		var date = [];		var data = [Math.random() * 150];		var now = new Date(base);		function addData(shift) {
now = [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'); date.push(now); data.push((Math.random() - 0.4) * 10 + data[data.length - 1]); if (shift) {
date.shift(); data.shift(); } now = new Date(+new Date(now) + oneDay); } for (var i = 1; i < 100; i++) {
addData(); } option = {
xAxis: {
type: 'category', boundaryGap: false, data: date }, yAxis: {
boundaryGap: [0, '50%'], type: 'value' }, series: [ {
name:'成交', type:'line', smooth:true, symbol: 'none', stack: 'a', areaStyle: {
normal: {
} }, data: data } ] }; setInterval(function () {
addData(true); textChart.setOption({
xAxis: {
data: date }, series: [{
name:'成交', data: data }] }); }, 500); // 基于准备好的dom,初始化echarts实例 var textChart = echarts.init(document.getElementById('main')); textChart.setOption(option)

结果:
在这里插入图片描述


7. ECharts 数据集


ECharts 使用 dataset管理数据,dataset 组件用于单独的数据集声明,从而数据可以单独管理,被多个组件复用,并且可以基于数据指定数据到视觉的映射。


    <script type="text/javascript">        // 基于准备好的dom,初始化echarts实例        var testChart = echarts.init(document.getElementById('main'));         // 指定图表的配置项和数据        var option = {
legend: {
}, tooltip: {
}, dataset: {
// 提供一份数据。 source: [ ['language', '2017', '2018', '2019','2020'], ['java', 43.3,65.7, 85.8, 93.7], ['python', 85.8,83.1, 73.4, 55.1], ['php', 86.4,73.4, 65.2, 82.5], ['javascript', 72.4, 53.9,45.7, 39.1] ] }, // 声明一个 X 轴,类目轴(category)。默认情况下,类目轴对应到 dataset 第一列。 xAxis: {
type: 'category'}, // 声明一个 Y 轴,数值轴。 yAxis: {
}, // 声明多个 bar 系列,默认情况下,每个系列会自动对应到 dataset 的每一列。 series: [ {
type: 'bar'}, {
type: 'bar'}, {
type: 'bar'}, {
type: 'bar'} ] }; // 使用刚指定的配置项和数据显示图表。 testChart.setOption(option); </script>

结果:
在这里插入图片描述
数据到图形的映射
可以在配置项中将数据映射到图形中,使用series.seriesLayoutBy属性来配置 dataset 是列(column)还是行(row)映射为图形系列(series),默认是按照列(column)来映射。


 // 指定图表的配置项和数据        var option = {
legend: {
}, tooltip: {
}, dataset: {
source: [ ['language', '2017', '2018', '2019','2020'], ['java', 43.3,65.7, 85.8, 93.7], ['python', 85.8,83.1, 73.4, 55.1], ['php', 86.4,73.4, 65.2, 82.5], ['javascript', 72.4, 53.9,45.7, 39.1] ] }, xAxis: [ {
type: 'category', gridIndex: 0}, {
type: 'category', gridIndex: 1} ], yAxis: [ {
gridIndex: 0}, {
gridIndex: 1} ], grid: [ {
bottom: '55%'}, {
top: '55%'} ], series: [ // 这几个系列会在第一个直角坐标系中,每个系列对应到 dataset 的每一行。 {
type: 'bar', seriesLayoutBy: 'row'}, {
type: 'bar', seriesLayoutBy: 'row'}, {
type: 'bar', seriesLayoutBy: 'row'}, // 这几个系列会在第二个直角坐标系中,每个系列对应到 dataset 的每一列。 {
type: 'bar', xAxisIndex: 1, yAxisIndex: 1}, {
type: 'bar', xAxisIndex: 1, yAxisIndex: 1}, {
type: 'bar', xAxisIndex: 1, yAxisIndex: 1}, {
type: 'bar', xAxisIndex: 1, yAxisIndex: 1} ] } // 使用刚指定的配置项和数据显示图表。 testChart.setOption(option);

结果:
在这里插入图片描述
使用 series.encode 属性将对应的数据映射到坐标轴(如 X、Y 轴):


  var option = {
dataset: {
source: [ ['score', 'amount', 'language'], [94.6, 58212, 'java'], [96.8, 78254, 'python'], [74.4, 41032, 'javascript'], [85.8, 12755, 'php'], [84.7, 20145, 'c++'] ] }, grid: {
containLabel: true}, xAxis: {
}, yAxis: {
type: 'category'}, series: [ {
type: 'bar', encode: {
// 将 "amount" 列映射到 X 轴。 x: 'amount', // 将 "product" 列映射到 Y 轴。 y: 'product' } } ] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option); </script>

结果:
在这里插入图片描述
视觉通道(颜色、尺寸等)的映射


可以使用 visualMap 组件进行视觉通道的映射。
视觉元素可以是:



  • symbol: 图元的图形类别。

  • symbolSize: 图元的大小。

  • color: 图元的颜色。

  • colorAlpha: 图元的颜色的透明度。

  • opacity: 图元以及其附属物(如文字标签)的透明度。

  • colorLightness: 颜色的明暗度。

  • colorSaturation: 颜色的饱和度。

  • colorHue: 颜色的色调。



visualMap组件可以定义多个,从而可以同时对数据中的多个维度进行视觉映射。


 var option = {
dataset: {
source: [ ['score', 'amount', 'product'], [89.3, 58212, 'java'], [57.1, 78254, 'python'], [74.4, 41032, 'c语言'], [50.1, 12755, 'php'], [89.7, 20145, 'javascript'], [68.1, 79146, 'css'], [19.6, 91852, 'html'], [10.6, 101852, 'go'], [32.7, 20112, 'Vue'] ] }, grid: {
containLabel: true}, xAxis: {
name: 'amount'}, yAxis: {
type: 'category'}, visualMap: {
orient: 'horizontal', left: 'center', min: 10, max: 100, text: ['High Score', 'Low Score'], // Map the score column to color dimension: 0, inRange: {
color: ['#93d698', '#ef6d6d'] } }, series: [ {
type: 'bar', encode: {
// Map the "amount" column to X axis. x: 'amount', // Map the "product" column to Y axis y: 'product' } } ] };

结果:
在这里插入图片描述
交互联动
多个图表共享一个 dataset,并带有联动交互:


  <script type="text/javascript">        // 基于准备好的dom,初始化echarts实例        var testChart = echarts.init(document.getElementById('main'));                 setTimeout(function () {
option = {
legend: {
}, tooltip: {
trigger: 'axis', showContent: false }, dataset: {
source: [ ['language', '2017', '2018', '2019','2020'], ['java', 43.3,65.7, 85.8, 93.7], ['python', 85.8,83.1, 73.4, 55.1], ['php', 86.4,73.4, 65.2, 82.5], ['javascript', 72.4, 53.9,45.7, 39.1] ] }, xAxis: {
type: 'category'}, yAxis: {
gridIndex: 0}, grid: {
top: '55%'}, series: [ {
type: 'line', smooth: true, seriesLayoutBy: 'row'}, {
type: 'line', smooth: true, seriesLayoutBy: 'row'}, {
type: 'line', smooth: true, seriesLayoutBy: 'row'}, {
type: 'line', smooth: true, seriesLayoutBy: 'row'}, {
type: 'pie', id: 'pie', radius: '30%', center: ['50%', '25%'], label: {
formatter: '{b}: {@2012} ({d}%)' }, encode: {
itemName: 'product', value: '2012', tooltip: '2012' } } ] }; testChart.on('updateAxisPointer', function (event) {
var xAxisInfo = event.axesInfo[0]; if (xAxisInfo) {
var dimension = xAxisInfo.value + 1; testChart.setOption({
series: {
id: 'pie', label: {
formatter: '{b}: {@[' + dimension + ']} ({d}%)' }, encode: {
value: dimension, tooltip: dimension } } }); } }); testChart.setOption(option); }); </script>

结果:
在这里插入图片描述


8. ECharts 交互组件


ECharts 提供了很多交互组件:组件 legend、标题组件 title、视觉映射组件 visualMap、数据区域缩放组件 dataZoom、时间线组件 timeline。


dataZoom
dataZoom 组件可以实现通过鼠标滚轮滚动,放大缩小图表的功能。
默认情况下 dataZoom 控制 x 轴,即对 x 轴进行数据窗口缩放和数据窗口平移操作。实例拖动 dataZoom 组件来缩小或放大图表。


// 指定图表的配置项和数据        var option = {
xAxis: {
type: 'value' }, yAxis: {
type: 'value' }, dataZoom: [ {
// 这个dataZoom组件,默认控制x轴。 type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件 start: 10, // 左边在 10% 的位置。 end: 60 // 右边在 60% 的位置。 } ], series: [ {
type: 'scatter', // 这是个『散点图』 itemStyle: {
opacity: 0.8 }, symbolSize: function (val) {
return val[2] * 40; }, data: [["14.616","7.241","0.896"],["3.958","5.701","0.955"],["2.768","8.971","0.669"],["9.051","9.710","0.171"],["14.046","4.182","0.536"],["12.295","1.429","0.962"],["4.417","8.167","0.113"],["0.492","4.771","0.785"],["7.632","2.605","0.645"],["14.242","5.042","0.368"]] } ] }

结果:
在这里插入图片描述
如果想在坐标系内进行拖动,以及用鼠标滚轮(或移动触屏上的两指滑动)进行缩放,那么需要 再再加上一个 inside 型的 dataZoom 组件。
在这里插入图片描述


option = {
..., dataZoom: [ {
// 这个dataZoom组件,默认控制x轴。 type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件 start: 10, // 左边在 10% 的位置。 end: 60 // 右边在 60% 的位置。 }, {
// 这个dataZoom组件,也控制x轴。 type: 'inside', // 这个 dataZoom 组件是 inside 型 dataZoom 组件 start: 10, // 左边在 10% 的位置。 end: 60 // 右边在 60% 的位置。 } ], ...}

通过 dataZoom.xAxisIndex 或 dataZoom.yAxisIndex 来指定 dataZoom 控制哪个或哪些数轴.


var data1 = [];var data2 = [];var data3 = [];var random = function (max) {
return (Math.random() * max).toFixed(3);};for (var i = 0; i < 500; i++) {
data1.push([random(15), random(10), random(1)]); data2.push([random(10), random(10), random(1)]); data3.push([random(15), random(10), random(1)]);}option = {
animation: false, legend: {
data: ['scatter', 'scatter2', 'scatter3'] }, tooltip: {
}, xAxis: {
type: 'value', min: 'dataMin', max: 'dataMax', splitLine: {
show: true } }, yAxis: {
type: 'value', min: 'dataMin', max: 'dataMax', splitLine: {
show: true } }, dataZoom: [ {
type: 'slider', show: true, xAxisIndex: [0], start: 1, end: 35 }, {
type: 'slider', show: true, yAxisIndex: [0], left: '93%', start: 29, end: 36 }, {
type: 'inside', xAxisIndex: [0], start: 1, end: 35 }, {
type: 'inside', yAxisIndex: [0], start: 29, end: 36 } ], series: [ {
name: 'scatter', type: 'scatter', itemStyle: {
normal: {
opacity: 0.8 } }, symbolSize: function (val) {
return val[2] * 40; }, data: data1 }, {
name: 'scatter2', type: 'scatter', itemStyle: {
normal: {
opacity: 0.8 } }, symbolSize: function (val) {
return val[2] * 40; }, data: data2 }, {
name: 'scatter3', type: 'scatter', itemStyle: {
normal: {
opacity: 0.8, } }, symbolSize: function (val) {
return val[2] * 40; }, data: data3 } ]}

结果:
在这里插入图片描述

上一篇:可视化 | Echarts响应式&数据的视觉映射
下一篇:Python3进阶(三) | SMTP发送邮件(发送不同格式、附件)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 00时09分41秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

CentOS 系列:CentOS 7 使用 virt-install + vnc 图形界面/非图形界面 创建虚拟机 2023-01-23
CentOS 系列:CentOS 7文件系统的组成 2023-01-23
CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细) 2023-01-23
CSDN----Markdown编辑器 2023-01-23
Docker容器进入的4种方式(推荐最后一种) 2023-01-23
Docker部署postgresql-11以及主从配置 2023-01-23
EnvironmentNotWritableError: The current user does not have write permissions to the target environm 2023-01-23
Golang起步篇(Windows、Linux、mac三种系统安装配置go环境以及IDE推荐以及入门语法详细释义) 2023-01-23
Hyper-V系列:windows11开启系统自带安卓虚拟机并安装apk包 2023-01-23
Hyper-V系列:微软官方文章 2023-01-23
idea打war包的两种方式 2023-01-23
Java系列:【注释模板】IDEA中JAVA类、方法注释模板教程 2023-01-23
JS系列(仅供参考):【浏览器编程】浏览器F12调试工具面板详解和JavaScript添加断点 2023-01-23
Kali 更换源(超详细,附国内优质镜像源地址) 2023-01-23
kali安装docker(亲测有效) 2023-01-23
Linux系列:Linux目录分析:[/] + [/usr] + [/usr/local] + [/usr/local/app-name]、Linux最全环境配置 + 动态库/静态库配置 2023-01-23
Linux系列:ubuntu各版本之间的区别以及Ubuntu、kubuntu、xUbuntu、lubuntu等版本区别及界面样式 2023-01-23
mysql系列:远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法 2023-01-23
Nessus扫描结果出现在TE.IO或者ES容器结果查看问题解决方案 2023-01-23
Nmap渗透测试指南之探索网络 2023-01-23