blob: 5e76a794e36bf4037a5ce798faee99eeb4f50ab3 [file] [log] [blame]
<!DOCTYPE html>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="lib/esl.js"></script>
<script src="lib/config.js"></script>
<script src="lib/jquery.min.js"></script>
<script src="lib/facePrint.js"></script>
<script src="lib/testHelper.js"></script>
<!-- <script src="ut/lib/canteen.js"></script> -->
<link rel="stylesheet" href="lib/reset.css" />
</head>
<body>
<style>
</style>
<div id="main0"></div>
<div id="main1"></div>
<div id="main2"></div>
<div id="main3"></div>
<script>
require(['echarts'/*, 'map/js/china' */], function (echarts) {
var option;
// $.getJSON('./data/nutrients.json', function (data) {});
var colorList = [{
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(51,192,205,0.01)' // 0% 处的颜色
},
{
offset: 1,
color: 'rgba(51,192,205,0.57)' // 100% 处的颜色
}
],
globalCoord: false // 缺省为 false
},
{
type: 'linear',
x: 1,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(115,172,255,0.02)' // 0% 处的颜色
},
{
offset: 1,
color: 'rgba(115,172,255,0.67)' // 100% 处的颜色
}
],
globalCoord: false // 缺省为 false
},
{
type: 'linear',
x: 1,
y: 0,
x2: 0,
y2: 0,
colorStops: [{
offset: 0,
color: 'rgba(158,135,255,0.02)' // 0% 处的颜色
},
{
offset: 1,
color: 'rgba(158,135,255,0.57)' // 100% 处的颜色
}
],
globalCoord: false // 缺省为 false
},
{
type: 'linear',
x: 0,
y: 1,
x2: 0,
y2: 0,
colorStops: [{
offset: 0,
color: 'rgba(252,75,75,0.01)' // 0% 处的颜色
},
{
offset: 1,
color: 'rgba(252,75,75,0.57)' // 100% 处的颜色
}
],
globalCoord: false // 缺省为 false
},
{
type: 'linear',
x: 1,
y: 1,
x2: 1,
y2: 0,
colorStops: [{
offset: 0,
color: 'rgba(253,138,106,0.01)' // 0% 处的颜色
},
{
offset: 1,
color: '#FDB36ac2' // 100% 处的颜色
}
],
globalCoord: false // 缺省为 false
},
{
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [{
offset: 0,
color: 'rgba(254,206,67,0.12)' // 0% 处的颜色
},
{
offset: 1,
color: '#FECE4391' // 100% 处的颜色
}
],
globalCoord: false // 缺省为 false
}
]
var colorLine = ['#33C0CD', '#73ACFF', '#9E87FF', '#FE6969', '#FDB36A', '#FECE43']
function getRich() {
let result = {}
colorLine.forEach((v, i) => {
result[`hr${i}`] = {
backgroundColor: colorLine[i],
borderRadius: 3,
width: 3,
height: 3,
padding: [0, 3, 3, -12]
}
result[`a${i}`] = {
padding: [-20, -60, 0, -20],
color: colorLine[i],
fontSize: 12
}
})
return result
}
let data = [{
'name': '北京',
'value': 25
}, {
'name': '上海',
'value': 20
}, {
'name': '广州',
'value': 18
}, {
'name': '深圳',
'value': 15
}, {
'name': '未知',
'value': 13
}, {
'name': '海外',
'value': 9
}].sort((a, b) => {
return b.value - a.value
})
data.forEach((v, i) => {
v.labelLine = {
lineStyle: {
width: 1,
color: colorLine[i]
}
}
})
option = {
series: [{
type: 'pie',
radius: '60%',
center: ['50%', '50%'],
clockwise: true,
avoidLabelOverlap: true,
label: {
show: true,
position: 'outside',
formatter: function(params) {
const name = params.name
const percent = params.percent + '%'
const index = params.dataIndex
return [`{a${index}|${name}:${percent}}`, `{hr${index}|}`].join('\n')
},
rich: getRich()
},
itemStyle: {
normal: {
color: function(params) {
return colorList[params.dataIndex]
}
}
},
data,
roseType: 'radius'
}]
}
var chart = testHelper.create(echarts, 'main0', {
title: [
'Test Case from https://gallery.echartsjs.com/editor.html?c=xgnWZ8Z9lI'
],
option: option
// height: 300,
// buttons: [{text: 'btn-txt', onclick: function () {}}],
// recordCanvas: true,
});
});
</script>
<script>
require(['echarts'/*, 'map/js/china' */], function (echarts) {
var option;
// $.getJSON('./data/nutrients.json', function (data) {});
var data = [{
value: 33310.12,
name: '邮件营销'
},
{
value: 234.88,
name: '联盟广告'
},
{
value: 13544444.44,
name: '视频广告'
},
{
value: 1.00,
name: '搜索引擎'
},
{
value: 310.12,
name: '测试文案1'
},
{
value: 234.33,
name: '测试文案2'
},
{
value: 135.55,
name: '测试文案3'
},
{
value: 1548,
name: '测试文案文字超多'
}
];
var color = ['#000000', '#dedede', '#343434', '#dfdfdf', ];
option = {
// title: {
// text: '饼图标签两端对称效果',
// subtext: '关键词: [饼图][环形图][引导线距离饼距离][label两端对称][label距离引导线距离]',
// x: 'center'
// },
series: [
// // 这个pie用于形成引导线和饼图间距
{
type: 'pie',
radius: ['40%', '55%'],
minAngle: 90,
label: {
normal: {
show: false,
}
},
data: data,
},
{
name: '访问来源',
type: 'pie',
minAngle: 90, // label最小扇区大小
label: {
normal: {
alignTo: 'edge', // label两端对称布局
// ECharts v4.6.0 版本起,提供了 'labelLine' 与 'edge' 两种新的布局方式
margin: 90, // 布局为两端对称时候需要外边距防止图表变形 数值随意不要太大
distanceToLabelLine: 0, // label距离引导线距离
formatter: function(param) {
return '{a|' + param.name + '}\n{hr|}\n' + '{d|' + param.value + '}';
},
opacity: 1,
backgroundColor: 'rgba(255, 0, 0, 0.2)',
rich: {
a: {
padding: [0, 10, 4, 10], // 4边距是文字和hr间距,此处的边距10用于解决label和引导线有间距问题
color: 'blue'
},
d: {
padding: [4, 10, 0, 10],
color: 'purple'
},
hr: {
borderWidth: 1,
width: '100%',
height: 0,
borderColor: 'blue'
}
}
},
},
labelLine: {
lineStyle: {
color: 'blue'
}
},
itemStyle: {
opacity: 0
},
radius: ['40%', '60%'],
data: data,
}
]
};
var chart = testHelper.create(echarts, 'main1', {
title: [
'Test Case from https://gallery.echartsjs.com/editor.html?c=x1TVKFGtZ1'
],
option: option
// height: 300,
// buttons: [{text: 'btn-txt', onclick: function () {}}],
// recordCanvas: true,
});
});
</script>
<script>
require(['echarts'/*, 'map/js/china' */], function (echarts) {
var option;
// $.getJSON('./data/nutrients.json', function (data) {});
var seriesData = [{
name: "大白",
value: "40000"
}, {
name: "长大",
value: "53000"
}, {
name: "杜洛克",
value: "40000"
}, {
name: "约克猪",
value: "10000"
}, {
name: "二元",
value: "40000"
}, {
name: "三元",
value: "60000"
}, {
name: "大长",
value: "10000"
}, {
name: "PIC",
value: "20000"
}];
var legendData1 = ["大白", "长大", "杜洛克", "约克猪"]
var legendData2 = ["二元", "三元", "大长","PIC"]
var colorList = ['#0066FF', '#2E2EE6', '#4400CC', '#00AACC', '#9BBF30', '#E60000', '#92368D', '#BF9926'];
option = {
backgroundColor: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 1,
colorStops: [{
offset: 0,
color: '#000F44' // 0% 处的颜色
}, {
offset: 1,
color: '#000B3B' // 100% 处的颜色
}],
globalCoord: false // 缺省为 false
},
// title: {
// text: '品种',
// x: '56%',
// y: 'center',
// textStyle: {
// fontSize:40,
// color: '#fff'
// }
// },
tooltip: {
trigger: 'item',
borderColor: 'rgba(255,255,255,.3)',
backgroundColor: 'rgba(13,5,30,.6)',
borderWidth: 1,
padding: 5,
formatter: function(parms) {
var str = parms.marker + "" + parms.data.name + "</br>" +
"数量:" + parms.data.value + "头</br>" +
"占比:" + parms.percent + "%";
return str;
}
},
legend: [{
type: "scroll",
orient: 'vertical',
icon:'square',
left: '8%',
align: 'left',
top: 'center',
itemGap: 20,
// bottom:'50%',
textStyle: {
fontSize:14,
color: '#AAAAAA'
},
data: legendData1
}, {
type: "scroll",
orient: 'vertical',
icon:'square',
left: '18%',
align: 'left',
top: 'center',
itemGap: 20,
// bottom:'50%',
textStyle: {
fontSize:14,
color: '#AAAAAA'
},
data: legendData2
}],
series: [{
type: 'pie',
z: 3,
center: ['62%', '50%'],
radius: ['25%', '37%'],
clockwise: true,
avoidLabelOverlap: true,
hoverOffset: 15,
itemStyle: {
normal: {
color: function(params) {
return colorList[params.dataIndex]
}
}
},
label: {
show: true,
position: 'outside',
formatter: '{a|{b}:{d}%}\n{hr|}',
rich: {
// hr: {
// backgroundColor: 't',
// borderRadius: 3,
// width: 3,
// height: 3,
// padding: [3, 3, 0, -12]
// },
a: {
color:'#fff',
padding: [0, -80, 20, -80]
}
}
},
labelLine: {
normal: {
length: 40,
length2: 90,
lineStyle: {
width: 1
}
}
},
data: seriesData
}, {
name:'第一层环',
type: 'pie',
z: 2,
tooltip:{
show:false
},
center: ['62%', '50%'],
radius: ['37%', '47%'],
hoverAnimation: false,
clockWise: false,
itemStyle: {
normal: {
// shadowBlur: 40,
// shadowColor: 'rgba(0, 255, 255,.3)',
color: 'rgba(1,15,80,.9)',
},
emphasis:{
color: 'rgba(1,15,80,.9)',
}
},
label: {
show: false
},
data: [100]
}, {
name:'第二层环',
type: 'pie',
z: 1,
tooltip:{
show:false
},
center: ['62%', '50%'],
radius: ['47%', '62%'],
hoverAnimation: false,
clockWise: false,
itemStyle: {
normal: {
// shadowBlur: 40,
// shadowColor: 'rgba(0, 255, 255,.3)',
color: 'rgba(0,15,69,.8)',
},
emphasis:{
color: 'rgba(0,15,69,.8)',
}
},
label: {
show: false
},
data: [100]
}]
};
var chart = testHelper.create(echarts, 'main2', {
title: [
'Test Case from https://gallery.echartsjs.com/editor.html?c=xD3PY0UKmS'
],
option: option
// height: 300,
// buttons: [{text: 'btn-txt', onclick: function () {}}],
// recordCanvas: true,
});
});
</script>
<script>
require(['echarts'/*, 'map/js/china' */], function (echarts) {
var option;
// $.getJSON('./data/nutrients.json', function (data) {});
let dashedPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM8AAAAOBAMAAAB6G1V9AAAAD1BMVEX////Kysrk5OTj4+TJycoJ0iFPAAAAG0lEQVQ4y2MYBaNgGAMTQQVFOiABhlEwCugOAMqzCykGOeENAAAAAElFTkSuQmCC';
let color = ['#FF8700', '#ffc300', '#00e473', '#009DFF'];
let chartData = [{
name: "本科及以上",
value: 13211,
unit: '元'
},
{
name: "高中",
value: 42111,
unit: '元'
},
{
name: "初中及以下",
value: 81711,
unit: '元'
},
{
name: "其他",
value: 121711,
unit: '元'
}
];
let arrName = [];
let arrValue = [];
let sum = 0;
let pieSeries = [],
lineYAxis = [];
// 数据处理
chartData.forEach((v, i) => {
arrName.push(v.name);
arrValue.push(v.value);
sum = sum + v.value;
})
// 图表option整理
chartData.forEach((v, i) => {
pieSeries.push({
name: '学历',
type: 'pie',
clockWise: false,
hoverAnimation: false,
radius: [65 - i * 15 + '%', 57 - i * 15 + '%'],
center: ["30%", "50%"],
label: {
show: false
},
data: [{
value: v.value,
name: v.name
}, {
value: sum - v.value,
name: '',
itemStyle: {
color: "rgba(0,0,0,0)"
}
}]
});
pieSeries.push({
name: '',
type: 'pie',
silent: true,
z: 1,
clockWise: false, //顺时加载
hoverAnimation: false, //鼠标移入变大
radius: [65 - i * 15 + '%',57 - i * 15 + '%'],
center: ["30%", "50%"],
label: {
show: false
},
data: [{
value: 7.5,
itemStyle: {
color: "#E3F0FF"
}
}, {
value: 2.5,
name: '',
itemStyle: {
color: "rgba(0,0,0,0)"
}
}]
});
v.percent = (v.value / sum * 100).toFixed(1) + "%";
lineYAxis.push({
value: i,
textStyle: {
rich: {
circle: {
color: color[i],
padding: [0, 5]
}
}
}
});
})
option = {
backgroundColor: '#fff',
color: color,
grid: {
top: '15%',
bottom: '54%',
left: "30%",
containLabel: false
},
yAxis: [{
type: 'category',
inverse: true,
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
formatter: function(params) {
let item = chartData[params];
console.log(item)
return '{line|}{circle|●}{name|'+ item.name +'}{bd||}{percent|'+item.percent+'}{value|'+ item.value+'}{unit|元}'
},
interval: 0,
inside: true,
textStyle: {
color: "#333",
fontSize: 14,
rich: {
line: {
width: 170,
height: 10,
backgroundColor: {image: dashedPic}
},
name: {
color: '#666',
fontSize: 14,
},
bd: {
color: '#ccc',
padding: [0, 5],
fontSize: 14,
},
percent:{
color: '#333',
fontSize: 14,
},
value: {
color: '#333',
fontSize: 16,
fontWeight: 500,
padding: [0, 0, 0, 20]
},
unit: {
fontSize: 14
}
}
},
show: true
},
data: lineYAxis
}],
xAxis: [{
show: false
}],
series: pieSeries
};
var chart = testHelper.create(echarts, 'main3', {
title: [
'Test Case from https://gallery.echartsjs.com/editor.html?c=xF_AXrV7sK'
],
option: option
// height: 300,
// buttons: [{text: 'btn-txt', onclick: function () {}}],
// recordCanvas: true,
});
});
</script>
</body>
</html>