提交 ef48aa35 编写于 作者: L lang

Pie roseType

上级 1e8e70fe
......@@ -33,7 +33,7 @@ define(function(require) {
getInitialData: function (option, ecModel) {
var list = new List([{
name: 'x',
name: 'value',
stackable: true
}], this);
list.initData(option.data);
......
......@@ -67,29 +67,28 @@ define(function (require) {
// } while (step < 200);
// }
return function (seriesModel, viewWidth, viewHeight) {
return function (seriesModel, r, viewWidth, viewHeight) {
var data = seriesModel.getData();
var labelLineModel = seriesModel.getModel('labelLine');
var labelLineLen = labelLineModel.get('length');
var labelLineLen2 = labelLineModel.get('length2');
// var avoidLabelOverlap = seriesModel.get('avoidLabelOverlap');
var labelNodes = [];
// var labelNodes = [];
data.each(function (idx) {
var layout = data.getItemLayout(idx);
var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel('label.normal');
var labelPosition = labelModel.get('position');
var labelLineModel = itemModel.getModel('labelLine');
var labelLineLen = labelLineModel.get('length');
var labelLineLen2 = labelLineModel.get('length2');
var midAngle = (layout.startAngle + layout.endAngle) / 2;
var dx = Math.cos(midAngle);
var dy = Math.sin(midAngle);
var r = layout.r;
var textX;
var textY;
var linePoints;
......@@ -102,8 +101,11 @@ define(function (require) {
}
else {
var isLabelInside = labelPosition === 'inside';
var x1 = (isLabelInside ? r / 2 * dx : r * dx) + layout.cx;
var y1 = (isLabelInside ? r / 2 * dy : r * dy) + layout.cy;
var x1 = (isLabelInside ? layout.r / 2 * dx : layout.r * dx) + layout.cx;
var y1 = (isLabelInside ? layout.r / 2 * dy : layout.r * dy) + layout.cy;
// For roseType
labelLineLen += r - layout.r;
textX = x1 + dx * 3;
textY = y1 + dy * 3;
......
......@@ -23,7 +23,7 @@ define(function (require) {
var startAngle = -seriesModel.get('startAngle') * Math.PI / 180;
var sum = data.getSum('x');
var sum = data.getSum('value');
if (sum === 0) {
sum = data.count();
}
......@@ -31,7 +31,13 @@ define(function (require) {
var clockWise = seriesModel.get('clockWise');
data.each('x', function (value, idx) {
var roseType = seriesModel.get('roseType');
// [0...max]
var extent = data.getDataExtent('value');
extent[0] = 0;
data.each('value', function (value, idx) {
var angle = sum === 0 ? radianPerVal : (value * radianPerVal);
var endAngle = startAngle + angle;
data.setItemLayout(idx, {
......@@ -41,13 +47,15 @@ define(function (require) {
cx: cx,
cy: cy,
r0: r0,
r: r
r: roseType
? numberUtil.linearMap(value, extent, [r0, r])
: r
});
startAngle = endAngle;
}, true);
labelLayout(seriesModel, width, height);
labelLayout(seriesModel, r, width, height);
});
}
});
\ No newline at end of file
......@@ -41,12 +41,14 @@ define(function (require) {
/**
* @param {string} str
* @return {string}
* @inner
*/
var s2d = function (str) {
return str < 10 ? ('0' + str) : str;
}
/**
* ISO Date format
* @param {string} tpl
* @param {number} value
* @inner
......
<html>
<head>
<meta charset="utf-8">
<script src="esl.js"></script>
<script src="config.js"></script>
</head>
<body>
<style>
html, body, #main {
width: 100%;
height: 100%;
}
</style>
<div id="main"></div>
<script>
require([
'echarts',
'echarts/chart/pie',
'echarts/component/legend',
'echarts/component/grid',
'echarts/component/tooltip'
], function (echarts) {
var chart = echarts.init(document.getElementById('main'), null, {
renderer: 'canvas'
});
var itemStyle = {
normal: {
// shadowBlur: 10,
// shadowOffsetX: 0,
// shadowOffsetY: 5,
// shadowColor: 'rgba(0, 0, 0, 0.4)'
}
};
chart.setOption({
legend: {
data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
},
tooltip: {
},
series: [{
name: 'pie',
type: 'pie',
stack: 'all',
symbol: 'circle',
symbolSize: 10,
selectedMode: 'single',
selectedOffset: 20,
roseType: true,
data:[
{value:335, name:'直接访问'},
{value:310, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:135, name:'视频广告'},
{value:600, name:'搜索引擎'}
],
itemStyle: itemStyle
}]
});
})
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册