问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ECharts 数据可视化按照文档做了一个时间轴,怎么把不同类型的图表显示出来?

发布网友 发布时间:2022-05-21 00:54

我来回答

1个回答

热心网友 时间:2023-10-09 23:34

最近有个朋友问了这样一个关于ECharts图表组件的问题,他想在一个页面内创建多个图表,不知道该如何做。最大的问题可能是受到了require([],function(){});的阻碍吧。
其实require无非就是一个模块化加载借用其回调函数去创建图表对象。
所以只要我们能够将创建多个图表对象的方法进行统一封装形成一个方法放入require()的回调函数内即可。
一个页面内创建多个ECharts图表示例效果图呈现
想要在一个页面创建多个图表对象需要准备如下几个条件,也可以说是注意事项:
1、想要创建几个图表对象就需要预先设置多少个图表容器
图表容器作为图表的载体,所以是必须的,且必须指定每一个容器的width和height为非零,否则会产生图表无法呈现的结果。

<div id="main" style="height: 400px; width: 500px; float: left; border: 1px solid #ccc;
padding: 10px;">
</div>
<div id="mainLine" style="height: 400px; width: 500px; float: left; border: 1px solid #ccc;
padding: 10px;">
</div>

这里准备了两个容器。
2、引入相关的js文件

<script src="js/esl.js" charset="utf-8" type="text/javascript"></script>
<script src="js/echarts.js" charset="utf-8" type="text/javascript"></script>

3、编写好创建不同图表对象的方法
1)、创建一个柱状图的函数

//创建ECharts柱状图图表
function DrawColumnEChart(ec) {
//--- 柱状图 ---
var myChart = ec.init(document.getElementById('main'));
//图表显示提示信息
myChart.showLoading({
text: "图表数据正在努力加载..."
});
myChart.hideLoading();
myChart.setOption({
title: {
text: "柱状图"
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['stepday.com', 'tuiwosa.com']
},
toolbox: {
show: false
},
calculable: true,
xAxis: [
{
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}
],
yAxis: [
{
type: 'value',
splitArea: { show: true }
}
],
series: [
{
name: 'stepday.com',
type: 'bar', //序列展现类型为柱状图
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name: 'tuiwosa.com',
type: 'bar',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
}
]
});

var ecConfig = require('echarts/config');
//ECharts图表的click事件监听
myChart.on("click", function () {
alert("你点击我了!");
});
}

2)、创建折线图的函数

//创建ECharts折线图图表
function DrawLineEChart(ec) {
//--- 折线图 ---
var myLineChart = ec.init(document.getElementById('mainLine'));
//图表显示提示信息
myLineChart.showLoading({
text: "图表数据正在努力加载..."
});
myLineChart.hideLoading();
myLineChart.setOption({
title: {
text: "折线图"
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['stepday.com', 'tuiwosa.com']
},
toolbox: {
show: false
},
calculable: true,
xAxis: [
{
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}
],
yAxis: [
{
type: 'value',
splitArea: { show: true }
}
],
series: [
{
name: 'stepday.com',
type: 'line', //序列展现类型为折线图
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name: 'tuiwosa.com',
type: 'line',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
}
]
});

var ecConfig = require('echarts/config');
//ECharts图表的click事件监听
myLineChart.on("click", function () {
alert("你点击我了!");
});
}

4、封装一个统一调用创建不同图表的函数

///将画多个图表的进行函数封装
function DrawCharts(ec) {
DrawColumnEChart(ec);
DrawLineEChart(ec);
}

5、结合模块加载函数require(requireArr,callbackFunction)创建图表对象

require(
[
'echarts',
'echarts/chart/bar', //按需加载图表关于bar图的部分
'echarts/chart/line' //按需加载图表关于线性图的部分
],
DrawCharts
);

6、特别提醒
1)、创建不同图表对象的时候需要注意方法内部关于init()初始化图表方法的时候其id要与需要状态当前图表容器id保持一致。
7、完整示例代码

<!DOCTYPE html>
<html lang="en">
<head>
<title>ECharts-基本线性图</title>
<script src="js/esl.js" charset="utf-8" type="text/javascript"></script>
<script src="js/echarts.js" charset="utf-8" type="text/javascript"></script>
</head>
<body>
<div id="main" style="height: 400px; width: 500px; float: left; border: 1px solid #ccc;
padding: 10px;">
</div>
<div id="mainLine" style="height: 400px; width: 500px; float: left; border: 1px solid #ccc;
padding: 10px;">
</div>
<div style="clear: both;">
<h3>
STEP DAY</h3>
<p>
我们只提供最直接、最具价值的信息,旨在:<a href="" target="_blank"></a>
</p>
</div>
<script type="text/javascript" language="javascript">
// Step:4 require echarts and use it in the callback.
// Step:4 动态加载echarts然后在回调函数中开始使用,注意保持按需加载结构定义图表路径
require(
[
'echarts',
'echarts/chart/bar', //按需加载图表关于bar图的部分
'echarts/chart/line' //按需加载图表关于线性图的部分
],
DrawCharts
);

///将画多个图表的进行函数封装
function DrawCharts(ec) {
DrawColumnEChart(ec);
DrawLineEChart(ec);
}

//创建ECharts柱状图图表
function DrawColumnEChart(ec) {
//--- 柱状图 ---
var myChart = ec.init(document.getElementById('main'));
//图表显示提示信息
myChart.showLoading({
text: "图表数据正在努力加载..."
});
myChart.hideLoading();
myChart.setOption({
title: {
text: "柱状图"
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['stepday.com', 'tuiwosa.com']
},
toolbox: {
show: false
},
calculable: true,
xAxis: [
{
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}
],
yAxis: [
{
type: 'value',
splitArea: { show: true }
}
],
series: [
{
name: 'stepday.com',
type: 'bar', //序列展现类型为柱状图
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name: 'tuiwosa.com',
type: 'bar',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
}
]
});

var ecConfig = require('echarts/config');
//ECharts图表的click事件监听
myChart.on("click", function () {
alert("你点击我了!");
});
}

//创建ECharts折线图图表
function DrawLineEChart(ec) {
//--- 折线图 ---
var myLineChart = ec.init(document.getElementById('mainLine'));
//图表显示提示信息
myLineChart.showLoading({
text: "图表数据正在努力加载..."
});
myLineChart.hideLoading();
myLineChart.setOption({
title: {
text: "折线图"
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['stepday.com', 'tuiwosa.com']
},
toolbox: {
show: false
},
calculable: true,
xAxis: [
{
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
}
],
yAxis: [
{
type: 'value',
splitArea: { show: true }
}
],
series: [
{
name: 'stepday.com',
type: 'line', //序列展现类型为折线图
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name: 'tuiwosa.com',
type: 'line',
data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
}
]
});

var ecConfig = require('echarts/config');
//ECharts图表的click事件监听
myLineChart.on("click", function () {
alert("你点击我了!");
});
}
</script>
</body>
</html>
转载
望采纳!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...地形、气候、河流、物产、经济发展状况、文物古迹、旅游资源等方面... 二本博士生好找工作吗(二表b是什么意思) 二表b大学是什么意思? 上海女明星有哪些 上海住了哪些明星 求那种感情强烈的小说,类似于 缺氧――和康巴男人的一夫多妻实验 那个... 像和市长千金爱上我相似的小说 【200分】寻找好看小说,都市类,像《和空姐同居的日子》差不多的小说... 推荐几部好看点的都市言情小说, 比如:《和空姐同居的日子》_百度... 求一个lp仿传奇单机版v3.05版的修改器下载地址! 为何说叙利亚战争是普京冒险的伟大胜利? 俄罗斯在叙利亚问题上到底是赢了还是输了 俄军为何赢得叙利亚战争胜利? 叙利亚内战何时结束,最后谁会赢? 世预赛中国vs叙利亚谁赢了的最新相关信息 在叙利亚问题上,奥巴马,普京,到底谁赢了?为什么? 谁将是叙利亚战争的真正赢家 叙利亚现总统巴沙尔·阿萨德在选举中获胜连任 ,你怎么看? 叙利亚战争是叙利亚赢了还是英国法国和美国赢了? 叙利亚战争最终谁会胜利 在叙利亚问题上谁才是最终的胜者,俄罗斯还是美国 叙利亚伊德利卜地区的最后决战,谁将是最大的赢家? 股票预警公式 今天的虚拟成交量大于昨天的2倍 报警 公式怎么编? 跪求高人帮忙编一个通达信盘中个股成交量大于前日成交量就跳出预警的公式 请问类似乌鸦喝水的故事过程有哪些? 请高手把这个成交量指标公式做成通达信选股预警公式。出现红色柱时候发出预警 求pobo博易大师盘中全天的虚拟成交量指标公式 请问能否给我编一个通达信的选股公式,可以预警的。条件:5日内15分钟成交量出现最大值时报警 就是自己在家里没事的时候唱歌,不是连接电脑的,只用手机的,请问用什么声卡好,想买一个声卡? 从1、2、3、4、5这五个数中任选3个数,不重复选择。请问一共有几种选法? 俄军空袭叙利亚普京赢了吗:介入容易抽身难叙利亚 有一部电影,有一段,在一个试工现场发现地雷,他们采取了排雷措施,还有在一个地方,发现一个战争时候残 中国叙利亚这场球谁赢了 - 信息提示 线性表的逻辑结构是什么?其所含节点的个数称为什么? 线性表的特性是什么? (1)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为 设线性表的长度为n (n ≥ 0),用顺序存储结构实现线性表。在第i (0 ≤ i ≤ n)个元素 C++结构体中int length,是长度,后面直接L.length=0,设置线性表的长度为0,为什么length就是长度 电子烟新规不应对未成年人产生诱导性,电子烟和“上头电子烟”有哪些区别? 雷霆行动电子烟多少钱 这个电子烟他牌子名字叫什么呀? 电脑被远程控制修改了开机密码,现在进不了桌面怎么办? 我那个电脑被远程控制,然后被改了,开机密码 我用Teamviewer远程控制单位的电脑,我单位电脑有开机密码,要开机后才能远程控制,怎么远程输开机密码呢 电脑开机密码忘记啦怎么办,30分钟远程协助小姐姐解除密码 我想用EXCEL做一张出入库的表格,格式应该怎样做更好? 电话手表相机怎么设置 怎么做出库,入库的表格 手臂和小腿汗毛多,想要做脱毛,激光脱毛能彻底脱毛吗?北京华韩激光脱毛怎么收费?