由于项目中需要用到Echarts,最近研究了一个星期。网上的教程也挺多的。磕磕碰碰的,难找到合适的例子。都说的马马虎虎。不废话了。开始吧。

这种上下排列的。。。

还有这种地图的。(如下)

还有就是配置的问题。(从echarts官网看例子。但是不能直接打开。如何在本地打开。)

我研究了一套非常好的配置方案。如下。

1.准备一个盒子,<div id="main1" style="width: 1600px;height:400px;"></div>

2.引入js  。 <script src="http://echarts.baidu.com/build/dist/echarts.js"></script>

3 .

// 路径配置开始
require.config({
  paths: {
    echarts: 'http://echarts.baidu.com/build/dist'
  }
});

// 路径配置结束

// 使用柱状图就加载bar模块,按需加载
require(
      [
        'echarts',
        'echarts/chart/bar',
        'echarts/chart/line'
      ],
      drawEcharts
);

4

// 函数调用
function drawEcharts(ec){
drawBar(ec);
drawBar2(ec);
drawBar3(ec);
drawBar4(ec);
 你在一个页面中,弄了几个echarts图表。 你就弄几个函数。 
}

5. 具体的函数。

函数一: function drawBar(ec){

var myBarChart = ec.init(document.getElementById('main1'));

var option = {}

myBarChart.setOption(option,true);

}

函数二:。。。。。。。。。。。。可以写n个。记得调用。然后html里弄n个盒子。一个盒子对应一个函数。这就是整体怎么使用的。

难点二。怎么给柱子添加点击跳转。下面是公司给的设计稿。

点击柱子。跳转到指定页面。

在你做的drawBar函数内部。加上如下代码

var ecConfig = require('echarts/config');
function eConsole(param) {
switch (param.dataIndex) {
case 0: //柱子1
window.location.href = "stSubject.html";
break;
case 1: //柱子2
window.location.href = "stSubject.html";
break;
case 2: //柱子3
window.location.href = "stSubject.html";
break;
case 3: //柱子3
window.location.href = "stSubject.html";
break;
case 4: //柱子3
window.location.href = "stSubject.html";
break;
case 5: //柱子3
window.location.href = "stSubject.html";
break;

default:
break;
}
}
myBarChart.on(ecConfig.EVENT.CLICK, eConsole);

就实现了跳转。

完整代码如下。复制到本地,既可看到效果。(b不需要你下载任何js库)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/reset.css" rel="stylesheet">
<link href="css/tongji.css" rel="stylesheet" >
</head>
<body>
<div class="statistcs"> <div class="content clearfix">
<div class="right-box fl right-box1">
<div class="item item1" id="item1"><div id="main1" style="width: 1600px;height:400px;"></div></div> </div>
</div>
</div>
<!-- <script src="js/bootstrap.js"></script> -->
<!-- <script src="js/jquery.js"></script> -->
<!-- <script src="js/echarts.js"></script> -->
<!-- <script src="js/common.js"></script> -->
<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
<script>
// 路径配置
require.config({
  paths: {
    echarts: 'http://echarts.baidu.com/build/dist'
  }
});
// 使用柱状图就加载bar模块,按需加载
require(
      [
        'echarts',
        'echarts/chart/bar',
        'echarts/chart/line'
      ],
      drawEcharts
);
// 函数调用
function drawEcharts(ec){
  drawBar(ec); 
}
function drawBar(ec){
  var myBarChart = ec.init(document.getElementById('main1'));
var option = {
color:['#1f67df'],
// default:[ false ],
title: {
show:true,
left:'50%',
backgroundColor:'transparent',//标题的背景颜色
text: '作业量',
},
grid:{
show:true,
left:'10%',
containLabel:true,
backgroundColor:"#fff",
},
tooltip: {},
// legend: {},
xAxis : [
{
splitLine:{show: true},//去除网格线
type : 'category',
data: ["五班","八班","十六班","","","","","","","","","",""],
// splitArea : {show : true}//保留网格区域
}
],
yAxis : [
{
splitLine:{show: true},//去除网格线
type : 'value',
// splitArea : {show : true}//保留网格区域
}
],
series: [{
name: '作业量',
type: 'bar',
// barWidth:"30%",
data: [, , , , , , , , , , , , ]
}]
};
myBarChart.setOption(option,true); /* 给柱状图绑定click事件 */
var ecConfig = require('echarts/config');
function eConsole(param) {
switch (param.dataIndex) {
case : //柱子1
window.location.href = "https://www.baidu.com/";
break;
case : //柱子2
window.location.href = "https://www.baidu.com/";
break;
case : //柱子3
window.location.href = "https://www.baidu.com/";
break;
case : //柱子3
window.location.href = "https://www.baidu.com/";
break;
case : //柱子3
window.location.href = "https://www.baidu.com/";
break;
case : //柱子3
window.location.href = "https://www.baidu.com/";
break; default:
break;
}
}
myBarChart.on(ecConfig.EVENT.CLICK, eConsole);
/* 给柱状图绑定click事件 */
}
</script>

这样。就能实现跳转啦。

难点二。如何把官网的例子在本地运行。

1 准备盒子。<div id="main" style="width: 1200px;height:800px;"></div>

2 引入这两个js 。。china.js是地图。务必引入。

<script src="js/echarts.js"></script>
<script src="js/china.js"></script>

2.5 或者可以引入china.json

这个需要配置如下代码:

//引入json地图
// $.get('json/china.json', function (chinaJson) {
// echarts.registerMap('china', chinaJson);
// });

3步:var myChart = echarts.init(document.getElementById('main'));

4部。就是把下载过来的代码粘贴到js中

官网的数据一般是这样的:

 var data = []
var geoCoordMap =[]

var convertData = function(data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value)
});
}
}
return res;
};

var convertedData = [
convertData(data),
convertData(data.sort(function(a, b) {
return b.value - a.value;
}).slice(0, 6))
];
data.sort(function(a, b) {
return a.value - b.value;
})

var selectedItems = [];
var categoryData = [];
var barData = [];
// var maxBar = 30;
var sum = 0;
var count = data.length;
for (var i = 0; i < data.length; i++) {
categoryData.push(data[i].name);
barData.push(data[i].value);
sum += data[i].value;
}
console.log(categoryData);
console.log(sum + " " + count)
option = {
backgroundColor: '#404a59',
animation: true,
animationDuration: 1000,
animationEasing: 'cubicInOut',
animationDurationUpdate: 1000,
animationEasingUpdate: 'cubicInOut',
title: [{
text: '全国用电量对比',
link: 'http://pages.anjuke.com/expert/newexpert.html',
subtext: 'data from Anjuke',
sublink: 'http://pages.anjuke.com/expert/newexpert.html',
left: 'center',
textStyle: {
color: '#fff'
}
}, {
id: 'statistic',
text: count ? '平均: ' + parseInt((sum / count).toFixed(4)) : '',
right: 120,
top: 40,
width: 100,
textStyle: {
color: '#fff',
fontSize: 16
}
}],
toolbox: {
iconStyle: {
normal: {
borderColor: '#fff'
},
emphasis: {
borderColor: '#b1e4ff'
}
},
feature: {
dataZoom: {},
brush: {
type: ['rect', 'polygon', 'clear']
},
saveAsImage: {
show: true
}
}
},
brush: {
outOfBrush: {
color: '#abc'
},
brushStyle: {
borderWidth: 2,
color: 'rgba(0,0,0,0.2)',
borderColor: 'rgba(0,0,0,0.5)',
},
seriesIndex: [0, 1],
throttleType: 'debounce',
throttleDelay: 300,
geoIndex: 0
},
geo: {
map: 'china',
left: '10',
right: '35%',
center: [117.98561551896913, 31.205000490896193],
zoom: 1.5,
label: {
emphasis: {
show: false
}
},
roam: true,
itemStyle: {
normal: {
areaColor: '#323c48',
borderColor: '#111'
},
emphasis: {
areaColor: '#2a333d'
}
}
},
tooltip: {
trigger: 'item'
},
grid: {
right: 40,
top: 100,
bottom: 40,
width: '30%'
},
xAxis: {
type: 'value',
scale: true,
position: 'top',
boundaryGap: false,
splitLine: {
show: false
},
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
margin: 2,
textStyle: {
color: '#aaa'
}
},
},
yAxis: {
type: 'category',
// name: 'TOP 20',
nameGap: 16,
axisLine: {
show: true,
lineStyle: {
color: '#ddd'
}
},
axisTick: {
show: false,
lineStyle: {
color: '#ddd'
}
},
axisLabel: {
interval: 0,
textStyle: {
color: '#ddd'
}
},
data: categoryData
},
series: [{
// name: 'pm2.5',
type: 'scatter',
coordinateSystem: 'geo',
data: convertedData[0],
symbolSize: function(val) {
return Math.max(val[2] / 300, 8);
},
label: {
normal: {
formatter: '{b}',
position: 'right',
show: false
},
emphasis: {
show: true
}
},
itemStyle: {
normal: {
color: '#FF8C00',
position: 'right',
show: true
}
}
}, {
// name: 'Top 5',
type: 'effectScatter',
coordinateSystem: 'geo',
data: convertedData[0],
symbolSize: function(val) {
return Math.max(val[2] / 500, 8);
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
label: {
normal: {
formatter: '{b}',
position: 'right',
show: true
}
},
itemStyle: {
normal: {
color: '#f4e925',
shadowBlur: 50,
shadowColor: '#EE0000'
}
},
zlevel: 1
}, {
id: 'bar',
zlevel: 2,
type: 'bar',
symbol: 'none',
itemStyle: {
normal: {
color: '#ddb926'
}
},

data: data
}]
};

function renderBrushed(params) {
var mainSeries = params.batch[0].selected[0];

var selectedItems = [];
var categoryData = [];
var barData = [];
var maxBar = 30;
var sum = 0;
var count = 0;

for (var i = 0; i < mainSeries.dataIndex.length; i++) {
var rawIndex = mainSeries.dataIndex[i];
var dataItem = convertedData[0][rawIndex];
var pmValue = dataItem.value[2];

sum += pmValue;
count++;

selectedItems.push(dataItem);
}

selectedItems.sort(function(a, b) {
// return b.value[2] - a.value[2];
return a.value - b.value;
});

for (var i = 0; i < Math.min(selectedItems.length, maxBar); i++) {
categoryData.push(selectedItems[i].name);
barData.push(selectedItems[i].value[2]);
}

this.setOption({
yAxis: {
data: categoryData
},
xAxis: {
axisLabel: {
show: !!count
}
},
title: {
id: 'statistic',
text: count ? '平均: ' + (sum / count).toFixed(4) : ''
},
series: {
id: 'bar',
// sort:'descending',
data: barData
}
});
}

最后。

myChart.setOption(option)

下面是整个代码。(复制到本地就能运行)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 引入 ECharts 文件 -->
<script src="js/echarts.js"></script>
<script src="js/china.js"></script>
<script src="js/jquery-1.9.1.js"></script> </head>
<body>
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
<div id="main" style="width: 1200px;height:800px;"></div>
<script type="text/javascript">
//引入json地图
// $.get('json/china.json', function (chinaJson) {
// echarts.registerMap('china', chinaJson);
// });
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
var data = [
{ name: "上海", value: },
{ name: "珠海", value: },
{ name: "三亚", value: },
{ name: "惠州", value: },
{ name: "海口", value: },
{ name: "合肥", value: },
{ name: "南京", value: },
{ name: "杭州", value: },
{ name: "苏州", value: },
{ name: "无锡", value: },
{ name: "昆山", value: },
{ name: "广州", value: },
{ name: "深圳", value: },
{ name: "佛山", value: },
{ name: "东莞", value: },
{ name: "福州", value: },
{ name: "厦门", value: },
{ name: "南宁", value: },
{ name: "郑州", value: },
{ name: "武汉", value: },
{ name: "长沙", value: },
{ name: "南昌", value: },
{ name: "北京", value: },
{ name: "长春", value: },
{ name: "大连", value: },
{ name: "沈阳", value: },
{ name: "哈尔滨", value: },
{ name: "天津", value: },
{ name: "济南", value: },
{ name: "青岛", value: },
{ name: "太原", value: },
{ name: "石家庄", value: },
{ name: "西安", value: },
{ name: "成都", value: },
{ name: "重庆", value: },
{ name: "昆明", value: }, ]; var geoCoordMap = {
"上海": [121.48, 31.22],
"珠海": [113.52, 22.3],
"三亚": [109.31, 18.14],
"惠州": [114.4, 23.09],
"海口": [110.35, 20.02],
"合肥": [117.27, 31.86],
"南京": [118.78, 32.04],
"杭州": [120.19, 30.26],
"苏州": [120.62, 31.32],
"无锡": [120.29, 31.59],
"昆山": [120.95, 31.39],
"广州": [113.23, 23.16],
"深圳": [114.07, 22.62],
"佛山": [113.11, 23.05],
"东莞": [113.75, 23.04],
"福州": [119.3, 26.08],
"厦门": [118.1, 24.46],
"南宁": [108.33, 22.84],
"郑州": [113.65, 34.76],
"武汉": [114.31, 30.52],
"长沙": [, 28.21],
"南昌": [115.89, 28.68],
"北京": [116.46, 39.92],
"长春": [125.35, 43.88],
"大连": [121.62, 38.92],
"沈阳": [123.38, 41.8],
"哈尔滨": [126.63, 45.75],
"天津": [117.2, 39.13],
"济南": [, 36.65],
"青岛": [120.33, 36.07],
"太原": [112.53, 37.87],
"石家庄": [114.48, 38.03],
"西安": [108.95, 34.27],
"成都": [104.06, 30.67],
"重庆": [106.54, 29.59],
"昆明": [102.73, 25.04],
}; var convertData = function(data) {
var res = [];
for (var i = ; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value)
});
}
}
return res;
}; var convertedData = [
convertData(data),
convertData(data.sort(function(a, b) {
return b.value - a.value;
}).slice(, ))
];
data.sort(function(a, b) {
return a.value - b.value;
}) var selectedItems = [];
var categoryData = [];
var barData = [];
// var maxBar = 30;
var sum = ;
var count = data.length;
for (var i = ; i < data.length; i++) {
categoryData.push(data[i].name);
barData.push(data[i].value);
sum += data[i].value;
}
console.log(categoryData);
console.log(sum + " " + count)
option = {
backgroundColor: '#404a59',
animation: true,
animationDuration: ,
animationEasing: 'cubicInOut',
animationDurationUpdate: ,
animationEasingUpdate: 'cubicInOut',
title: [{
text: '全国用电量对比',
link: 'http://pages.anjuke.com/expert/newexpert.html',
subtext: 'data from Anjuke',
sublink: 'http://pages.anjuke.com/expert/newexpert.html',
left: 'center',
textStyle: {
color: '#fff'
}
}, {
id: 'statistic',
text: count ? '平均: ' + parseInt((sum / count).toFixed()) : '',
right: ,
top: ,
width: ,
textStyle: {
color: '#fff',
fontSize:
}
}],
toolbox: {
iconStyle: {
normal: {
borderColor: '#fff'
},
emphasis: {
borderColor: '#b1e4ff'
}
},
feature: {
dataZoom: {},
brush: {
type: ['rect', 'polygon', 'clear']
},
saveAsImage: {
show: true
}
}
},
brush: {
outOfBrush: {
color: '#abc'
},
brushStyle: {
borderWidth: ,
color: 'rgba(0,0,0,0.2)',
borderColor: 'rgba(0,0,0,0.5)',
},
seriesIndex: [, ],
throttleType: 'debounce',
throttleDelay: ,
geoIndex:
},
geo: {
map: 'china',
left: '',
right: '35%',
center: [117.98561551896913, 31.205000490896193],
zoom: 1.5,
label: {
emphasis: {
show: false
}
},
roam: true,
itemStyle: {
normal: {
areaColor: '#323c48',
borderColor: '#111'
},
emphasis: {
areaColor: '#2a333d'
}
}
},
tooltip: {
trigger: 'item'
},
grid: {
right: ,
top: ,
bottom: ,
width: '30%'
},
xAxis: {
type: 'value',
scale: true,
position: 'top',
boundaryGap: false,
splitLine: {
show: false
},
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
margin: ,
textStyle: {
color: '#aaa'
}
},
},
yAxis: {
type: 'category',
// name: 'TOP 20',
nameGap: ,
axisLine: {
show: true,
lineStyle: {
color: '#ddd'
}
},
axisTick: {
show: false,
lineStyle: {
color: '#ddd'
}
},
axisLabel: {
interval: ,
textStyle: {
color: '#ddd'
}
},
data: categoryData
},
series: [{
// name: 'pm2.5',
type: 'scatter',
coordinateSystem: 'geo',
data: convertedData[],
symbolSize: function(val) {
return Math.max(val[] / , );
},
label: {
normal: {
formatter: '{b}',
position: 'right',
show: false
},
emphasis: {
show: true
}
},
itemStyle: {
normal: {
color: '#FF8C00',
position: 'right',
show: true
}
}
}, {
// name: 'Top 5',
type: 'effectScatter',
coordinateSystem: 'geo',
data: convertedData[],
symbolSize: function(val) {
return Math.max(val[] / , );
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
label: {
normal: {
formatter: '{b}',
position: 'right',
show: true
}
},
itemStyle: {
normal: {
color: '#f4e925',
shadowBlur: ,
shadowColor: '#EE0000'
}
},
zlevel:
}, {
id: 'bar',
zlevel: ,
type: 'bar',
symbol: 'none',
itemStyle: {
normal: {
color: '#ddb926'
}
}, data: data
}]
}; function renderBrushed(params) {
var mainSeries = params.batch[].selected[]; var selectedItems = [];
var categoryData = [];
var barData = [];
var maxBar = ;
var sum = ;
var count = ; for (var i = ; i < mainSeries.dataIndex.length; i++) {
var rawIndex = mainSeries.dataIndex[i];
var dataItem = convertedData[][rawIndex];
var pmValue = dataItem.value[]; sum += pmValue;
count++; selectedItems.push(dataItem);
} selectedItems.sort(function(a, b) {
// return b.value[2] - a.value[2];
return a.value - b.value;
}); for (var i = ; i < Math.min(selectedItems.length, maxBar); i++) {
categoryData.push(selectedItems[i].name);
barData.push(selectedItems[i].value[]);
} this.setOption({
yAxis: {
data: categoryData
},
xAxis: {
axisLabel: {
show: !!count
}
},
title: {
id: 'statistic',
text: count ? '平均: ' + (sum / count).toFixed() : ''
},
series: {
id: 'bar',
// sort:'descending',
data: barData
}
});
}
myChart.setOption(option)
</script>
</body>
</html>

配置Echarts大全的更多相关文章

  1. 关于vue中如何配置echarts以及使用方法

    ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等) ...

  2. 知识点4: 配置echarts折线图和饼图

    折线图 效果图 html <template> <div id="v11-charts3"></div> </template> j ...

  3. webpack 配置echarts 按需加载

    引入babel-plugin-equire插件,方便使用.yarn add babel-plugin-equire -D 在.babelrc文件中的配置 { "presets": ...

  4. asp.net中web.config配置节点大全详解

    最近网上找了一些关于Web.config配置节点的文章,发现很多都写的都比较零散,而且很少有说明各个配置节点的作用和用法.搜索了一下发现有一篇写的不错,这里引用一下 原文地址 http://www.c ...

  5. AndroidManifest.xml 配置权限大全

    问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permissi ...

  6. asp.net中web.config配置节点大全详解【转】

    web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web ...

  7. 自制OSPF配置实验大全

    OSPF综合实验(gns模拟器)   注意点: Ospf实验推荐用gns制作 //图中的交换机可以视觉忽略或缩小成一个点.(^ v^) Ospf 实验拓扑图 ​ 目录 OSPF综合实验... 1 Os ...

  8. 自制EIGRP配置实验大全

    EIGRP综合实验 本实验可能会有一两个出错的地方,希望大家进行实验测试后,可以指正!当然绝大部分都是正确滴! 实验A:基本配置 A.0)实验目的: 熟悉eigrp的基本配置 A.1)实验拓扑: A. ...

  9. consul配置参数大全、详解、总结

    命令行选项 以下选项全部在命令行中指定. -advertise - 通告地址用于更改我们通告给集群中其他节点的地址.默认情况下,-bind地址是通告的.但是,在某些情况下,可能存在无法绑定的可路由地址 ...

随机推荐

  1. OSGi Bundle

    OSGi Framework looks like OS, Bundle looks like program, OS can create a process to run program with ...

  2. .NET开源工作流RoadFlow-表单设计-日期时间选择

    在表单中添加一个日期时间选择框: 选择范围:指定一个日期选择范围. 时间:是否允许选择时间.

  3. linux常用指令集-持续更新...

    0.查看所有java进程GC情况:for i in `jps|egrep -v "Jps|Launcher" |cut -d" " -f1`;do pwdx $ ...

  4. Ruby系列文章之1---开发者应该熟悉的10个工具

    1. Git Git是进入Ruby这个生态圈首先最应该学会的工具.几乎所有以Ruby开发出来的套件都放在Github上.也就是不管你要下载或修改协作都需要透过Git. 2. RVM Ruby有很多种i ...

  5. HCNA配置手工负载分担模式链路聚合

    一.配置手工负载分担模式链路聚合 链路聚合(Link Aggregation)是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法,又称为多接口负载均衡组(Load Sharing Grou ...

  6. CentOS7 查询已安装的包方便整理 /卸载

    以PHP为例.首先查看已安装的PHP rpm -qa |grep php 输出结果: php-cli--.el7.x86_64 php-common--.el7.x86_64 查询rpm包的安装时间和 ...

  7. 如何读写json文件

    代码如下: import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io. ...

  8. [转]查找问题的利器 - Git Bisect

    转自:http://gitbook.liuhui998.com/5_4.html 假设你在项目的'2.6.18'版上面工作, 但是你当前的代码(master)崩溃(crash)了. 有时解决这种问题的 ...

  9. [转]Ubuntu 小企鹅输入法fcitx 支持 五笔拼音

    之前在Ubuntu下使用ibus五笔输入法,用了一段时间发现五笔输入法不能输入词组,并且五笔不支持拼音的功能,从网上找到可以使用fcitx替换掉ibus,因此自已尝试了一把,安装步骤如下: 1. 安装 ...

  10. Ajax系列之三:UpdatePanel

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhanghongjie0302/article/details/35609691           ...