提交 a0c3f5ff 编写于 作者: L lang

maker on polar

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