提交 a0c3f5ff 编写于 作者: L lang

maker on polar

上级 c77920c6
...@@ -24,6 +24,7 @@ define(function (require) { ...@@ -24,6 +24,7 @@ define(function (require) {
delete mlFrom.type; // Remove type delete mlFrom.type; // Remove type
// FIXME Polar should use circle
mlFrom[baseAxisKey] = baseScaleExtent[0]; mlFrom[baseAxisKey] = baseScaleExtent[0];
mlTo[baseAxisKey] = baseScaleExtent[1]; mlTo[baseAxisKey] = baseScaleExtent[1];
...@@ -94,7 +95,7 @@ define(function (require) { ...@@ -94,7 +95,7 @@ define(function (require) {
this.group.add(seriesMarkLine.group); this.group.add(seriesMarkLine.group);
var mlData = createList(coordSys, seriesData, mlModel) var mlData = createList(coordSys, seriesData, mlModel)
var dims = mlData.from.dimensions.slice(0, 2); var dims = coordSys.dimensions;
var fromData = mlData.from; var fromData = mlData.from;
var toData = mlData.to; var toData = mlData.to;
...@@ -153,36 +154,42 @@ define(function (require) { ...@@ -153,36 +154,42 @@ define(function (require) {
* @param {module:echarts/model/Model} mpModel * @param {module:echarts/model/Model} mpModel
*/ */
function createList(coordSys, seriesData, mlModel) { function createList(coordSys, seriesData, mlModel) {
var baseAxis = coordSys && coordSys.getBaseAxis(); var dataDimensions = seriesData.dimensions;
var valueAxis = coordSys && coordSys.getOtherAxis(baseAxis);
var dimensions = seriesData.dimensions.slice();
// Polar and cartesian with category axis may have dimensions inversed
var dimensionInverse = dimensions[0] === 'y' || dimensions[0] === 'angle';
if (dimensionInverse) {
dimensions.inverse();
}
var dimensionInfosMap = zrUtil.map( var dimensionInfosMap = zrUtil.map(
dimensions, seriesData.getDimensionInfo, seriesData dataDimensions, seriesData.getDimensionInfo, seriesData
); );
var fromData = new List(dimensionInfosMap, mlModel); var fromData = new List(dimensionInfosMap, mlModel);
var toData = new List(dimensionInfosMap, mlModel); var toData = new List(dimensionInfosMap, mlModel);
var optData = zrUtil.filter( if (coordSys) {
zrUtil.map(mlModel.get('data'), zrUtil.curry( var baseAxis = coordSys.getBaseAxis();
markLineTransform, seriesData, baseAxis, valueAxis var valueAxis = coordSys.getOtherAxis(baseAxis);
var coordDimensions = coordSys.dimensions;
var indexOf = zrUtil.indexOf;
// FIXME 公用?
var coordDataIdx = [
indexOf(dataDimensions, coordDimensions[0]),
indexOf(dataDimensions, coordDimensions[1])
];
var optData = zrUtil.filter(
zrUtil.map(mlModel.get('data'), zrUtil.curry(
markLineTransform, seriesData, baseAxis, valueAxis
)), )),
zrUtil.curry( zrUtil.curry(
markLineFilter, coordSys, dimensionInverse markLineFilter, coordSys, coordDataIdx
) )
); );
fromData.initData( fromData.initData(
zrUtil.map(optData, function (item) { return item[0]; }) zrUtil.map(optData, function (item) { return item[0]; })
); );
toData.initData( toData.initData(
zrUtil.map(optData, function (item) { return item[1]; }) zrUtil.map(optData, function (item) { return item[1]; })
); );
}
return { return {
from: fromData, from: fromData,
to: toData to: toData
......
...@@ -46,7 +46,7 @@ define(function (require) { ...@@ -46,7 +46,7 @@ define(function (require) {
} }
var mpData = createList(coordSys, seriesData, mpModel); var mpData = createList(coordSys, seriesData, mpModel);
var dims = mpData.dimensions.slice(0, 2); var dims = coordSys.dimensions;
mpData.each(function (idx) { mpData.each(function (idx) {
var itemModel = mpData.getItemModel(idx); var itemModel = mpData.getItemModel(idx);
...@@ -88,29 +88,35 @@ define(function (require) { ...@@ -88,29 +88,35 @@ define(function (require) {
* @param {module:echarts/model/Model} mpModel * @param {module:echarts/model/Model} mpModel
*/ */
function createList (coordSys, seriesData, mpModel) { function createList (coordSys, seriesData, mpModel) {
var baseAxis = coordSys && coordSys.getBaseAxis(); var dataDimensions = seriesData.dimensions;
var valueAxis = coordSys && coordSys.getOtherAxis(baseAxis);
var dimensions = seriesData.dimensions.slice();
// Polar and cartesian with category axis may have dimensions inversed
var dimensionInverse = dimensions[0] === 'y' || dimensions[0] === 'angle';
if (dimensionInverse) {
dimensions.inverse();
}
var mpData = new List(zrUtil.map( var mpData = new List(zrUtil.map(
dimensions, seriesData.getDimensionInfo, seriesData dataDimensions, seriesData.getDimensionInfo, seriesData
), mpModel); ), mpModel);
mpData.initData( if (coordSys) {
zrUtil.filter( var baseAxis = coordSys.getBaseAxis();
zrUtil.map(mpModel.get('data'), zrUtil.curry( var valueAxis = coordSys.getOtherAxis(baseAxis);
markerHelper.dataTransform, seriesData, baseAxis, valueAxis var coordDimensions = coordSys.dimensions;
)),
zrUtil.curry( var indexOf = zrUtil.indexOf;
markerHelper.dataFilter, coordSys, dimensionInverse // FIXME 公用?
var coordDataIdx = [
indexOf(dataDimensions, coordDimensions[0]),
indexOf(dataDimensions, coordDimensions[1])
];
mpData.initData(
zrUtil.filter(
zrUtil.map(mpModel.get('data'), zrUtil.curry(
markerHelper.dataTransform, seriesData, baseAxis, valueAxis
)),
zrUtil.curry(
markerHelper.dataFilter, coordSys, coordDataIdx
)
) )
) );
); }
return mpData; return mpData;
}; };
......
...@@ -4,7 +4,7 @@ define(function (require) { ...@@ -4,7 +4,7 @@ define(function (require) {
var markerTypeCalculatorWithExtent = function (percent, data, baseAxisDim, valueAxisDim) { var markerTypeCalculatorWithExtent = function (percent, data, baseAxisDim, valueAxisDim) {
var extent = data.getDataExtent(valueAxisDim); var extent = data.getDataExtent(valueAxisDim);
var valueIndex = (valueAxisDim === 'radius' || valueAxisDim === 'x') ? 0 : 1; var valueIndex = (valueAxisDim === 'angle' || valueAxisDim === 'x') ? 0 : 1;
var valueArr = []; var valueArr = [];
var min = extent[0]; var min = extent[0];
var max = extent[1]; var max = extent[1];
...@@ -71,9 +71,9 @@ define(function (require) { ...@@ -71,9 +71,9 @@ define(function (require) {
}; };
// Filter data which is out of coordinateSystem range // Filter data which is out of coordinateSystem range
var dataFilter = function (coordSys, dimensionInverse, item) { var dataFilter = function (coordSys, coordDataIdx, item) {
var value = [item.value[0], item.value[1]]; var value = item.value;
dimensionInverse && value.inverse(); value = [value[coordDataIdx[0]], value[coordDataIdx[1]]];
return coordSys.containData(value); return coordSys.containData(value);
} }
......
...@@ -85,15 +85,17 @@ define(function (require) { ...@@ -85,15 +85,17 @@ define(function (require) {
/** /**
* Get precision used for formatting * Get precision used for formatting
* @param {Array.<number>} [dataExtent]
* @return {number} * @return {number}
*/ */
getFormatPrecision: function () { getFormatPrecision: function (dataExtent) {
dataExtent = dataExtent || this.scale.getExtent();
var log = Math.log; var log = Math.log;
var LN10 = Math.LN10; var LN10 = Math.LN10;
var dataExtent = this.scale.getExtent();
var extent = this._extent; var extent = this._extent;
var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10); var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);
var sizeQuantity = Math.ceil(log(Math.abs(extent[1] - extent[0])) / LN10); var sizeQuantity = Math.round(log(Math.abs(extent[1] - extent[0])) / LN10);
return Math.max( return Math.max(
-dataQuantity + sizeQuantity, -dataQuantity + sizeQuantity,
0 0
......
...@@ -19,7 +19,9 @@ ...@@ -19,7 +19,9 @@
'echarts/chart/line', 'echarts/chart/line',
'echarts/component/legend', 'echarts/component/legend',
'echarts/component/polar', 'echarts/component/polar',
'echarts/component/tooltip' 'echarts/component/tooltip',
'echarts/component/markPoint',
'echarts/component/markLine'
], function (echarts) { ], function (echarts) {
var chart = echarts.init(document.getElementById('main'), null, { var chart = echarts.init(document.getElementById('main'), null, {
...@@ -33,9 +35,9 @@ ...@@ -33,9 +35,9 @@
for (var i = 0; i < 10; i++) { for (var i = 0; i < 10; i++) {
xAxisData.push('类目' + i); xAxisData.push('类目' + i);
data1.push((Math.random() * 2).toFixed(3)); data1.push((Math.random() * 2 + 1).toFixed(3));
data2.push(Math.random().toFixed(3)); data3.push((Math.random() + 0.5).toFixed(3));
data3.push(Math.random().toFixed(3)); data2.push((Math.random() + 0.5).toFixed(3));
} }
chart.setOption({ chart.setOption({
...@@ -61,6 +63,16 @@ ...@@ -61,6 +63,16 @@
stack: 'all', stack: 'all',
type: 'line', type: 'line',
symbolSize: 10, symbolSize: 10,
itemStyle: {
normal: {
areaStyle: {}
}
},
markPoint: {
data: [{
type: 'max'
}]
},
data: data1 data: data1
}, { }, {
coordinateSystem: 'polar', coordinateSystem: 'polar',
...@@ -68,6 +80,18 @@ ...@@ -68,6 +80,18 @@
stack: 'all', stack: 'all',
type: 'line', type: 'line',
symbolSize: 10, symbolSize: 10,
itemStyle: {
normal: {
areaStyle: {}
}
},
markLine: {
data: [[{
type: 'max'
}, {
type: 'min'
}]]
},
data: data2 data: data2
}, { }, {
coordinateSystem: 'polar', coordinateSystem: 'polar',
...@@ -75,6 +99,11 @@ ...@@ -75,6 +99,11 @@
stack: 'all', stack: 'all',
type: 'line', type: 'line',
symbolSize: 10, symbolSize: 10,
itemStyle: {
normal: {
areaStyle: {}
}
},
data: data3 data: data3
}] }]
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册