嵌套饼图的实现主要是定义多层数据,实际上只需要写成json格式的数组,多层数据源之间用逗号连接起来,自定义样式之后就可以实现,与非嵌套饼图没有很大的区别。
1.下载Echarts插件,官网地址:http://echarts.baidu.com/download.html
2.HTML页面引入
文件层级机构:
源码部分:
legend:图例说明
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="container" style="height: 100%"></div>
<script type="text/javascript" src="echarts/echarts.js"></script>
<script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
option = null;
option = {
backgroundColor:'#FAFAD2',
title: {
text: '国民营销信息来源渠道',
left: 'center',
//标题栏的高度,值越大,距离顶部的距离越大
top: 50,
//标题栏字体的颜色
textStyle: {
color: '#FFD700'
}
},
legend:{
orient:'vertical',
x:'left',
data:['直达','营销广告','搜索引擎','邮件营销','联盟广告','视频广告','百度','谷歌','必应','其他']
},
tooltip:{
trigger: 'item',
// ( 访问来源:
// 百度:1048 40.9%)
formatter: "{a} <br/>{b}:{c} ({d}%)"
},
series :[
{
//饼图中内容介绍
name:'客户访问来源',
//统计表的类型
type:'pie',
//饼图的弧度,值越小生成的饼状图越小
radius : [0,'30%'],
//饼状图的外围标签,位置定义inner文字标签在扇形内部
label: {
normal: {
position:'inner'
}
},
//指向外围标签的线条,当不定义样式时候线条默认与扇形颜色相同
labelLine: {
normal: {
show:false
}
},
//内层数据
data:[
{value:335, name:'直接访问'},
{value:310, name:'邮件营销'},
{value:274, name:'联盟广告'},
{value:235, name:'视频广告'},
{value:400, name:'搜索引擎'}
]
},
{
name:'访问来源',
type:'pie',
radius:['40%','55%'],
label:{
normal:{
formatter:'{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c} {per|{d}%}',
//外部标签的背景色
backgroundColor:'#FFA07A',
//外部标签的边框颜色
borderColor:'#DCDCDC',
borderWidth:1,
borderRadius:4,
rich:{
a:{
color:'#999',
lineHeight:22,
align:'center'
},
//外围标签内部划线颜色
hr: {
borderColor: '#708090',
width: '100%',
borderWidth: 0.5,
height: 0
},
b: {
fontSize: 16,
lineHeight: 33
},
//显示百分比数据的颜色和背景色
per: {
color: '#CD5C5C',
backgroundColor: '#FFDEAD',
padding: [2, 4],
borderRadius: 2
}
}
}
},
//外层数据
data:[
{value:335, name:'直达'},
{value:310, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:135, name:'视频广告'},
{value:1048, name:'百度'},
{value:251, name:'谷歌'},
{value:147, name:'必应'},
{value:102, name:'其他'}
]
}
]
};;
if (option && typeof option === "object") {
myChart.setOption(option, true);
}
</script>
</body>
</html>
实现的效果: