提交 e0d5c09b 编写于 作者: K kener

柱形图、折线图堆积下开启数值轴的scale模式计算错误

fix #255
上级 d1638d19
...@@ -248,10 +248,13 @@ define(function(require) { ...@@ -248,10 +248,13 @@ define(function(require) {
// 空数据在做完后补充拖拽提示框 // 空数据在做完后补充拖拽提示框
continue; continue;
} }
y = valueAxis.getCoord(value); //y = valueAxis.getCoord(value);
if (value > 0) { if (value > 0) {
// 正向堆叠 // 正向堆叠
barHeight = baseYP - y; //barHeight = baseYP - y;
barHeight = m > 0
? valueAxis.getCoordSize(value)
: (baseYP - valueAxis.getCoord(value));
// 非堆叠数据最小高度有效 // 非堆叠数据最小高度有效
if (n == 1 if (n == 1
&& barMinHeightMap[seriesIndex] > barHeight && barMinHeightMap[seriesIndex] > barHeight
...@@ -263,7 +266,10 @@ define(function(require) { ...@@ -263,7 +266,10 @@ define(function(require) {
} }
else if (value < 0){ else if (value < 0){
// 负向堆叠 // 负向堆叠
barHeight = y - baseYN; //barHeight = y - baseYN;
barHeight = m > 0
? valueAxis.getCoordSize(value)
: (valueAxis.getCoord(value) - baseYN);
// 非堆叠数据最小高度有效 // 非堆叠数据最小高度有效
if (n == 1 if (n == 1
&& barMinHeightMap[seriesIndex] > barHeight && barMinHeightMap[seriesIndex] > barHeight
...@@ -275,7 +281,7 @@ define(function(require) { ...@@ -275,7 +281,7 @@ define(function(require) {
} }
else { else {
// 0值 // 0值
barHeight = baseYP - y; barHeight = 0;//baseYP - y;
// 最小高度无效 // 最小高度无效
lastYP -= barHeight; lastYP -= barHeight;
y = lastYP; y = lastYP;
...@@ -442,10 +448,13 @@ define(function(require) { ...@@ -442,10 +448,13 @@ define(function(require) {
// 空数据在做完后补充拖拽提示框 // 空数据在做完后补充拖拽提示框
continue; continue;
} }
x = valueAxis.getCoord(value); //x = valueAxis.getCoord(value);
if (value > 0) { if (value > 0) {
// 正向堆叠 // 正向堆叠
barHeight = x - baseXP; //barHeight = x - baseXP;
barHeight = m > 0
? valueAxis.getCoordSize(value)
: (valueAxis.getCoord(value) - baseXP);
// 非堆叠数据最小高度有效 // 非堆叠数据最小高度有效
if (n == 1 if (n == 1
&& barMinHeightMap[seriesIndex] > barHeight && barMinHeightMap[seriesIndex] > barHeight
...@@ -457,7 +466,10 @@ define(function(require) { ...@@ -457,7 +466,10 @@ define(function(require) {
} }
else if (value < 0){ else if (value < 0){
// 负向堆叠 // 负向堆叠
barHeight = baseXN - x; //barHeight = baseXN - x;
barHeight = m > 0
? valueAxis.getCoordSize(value)
: (baseXN - valueAxis.getCoord(value));
// 非堆叠数据最小高度有效 // 非堆叠数据最小高度有效
if (n == 1 if (n == 1
&& barMinHeightMap[seriesIndex] > barHeight && barMinHeightMap[seriesIndex] > barHeight
...@@ -469,7 +481,7 @@ define(function(require) { ...@@ -469,7 +481,7 @@ define(function(require) {
} }
else { else {
// 0值 // 0值
barHeight = x - baseXP; barHeight = 0;//x - baseXP;
// 最小高度无效 // 最小高度无效
x = lastXP; x = lastXP;
lastXP += barHeight; lastXP += barHeight;
......
...@@ -268,15 +268,19 @@ define(function(require) { ...@@ -268,15 +268,19 @@ define(function(require) {
} }
continue; continue;
} }
y = valueAxis.getCoord(value); //y = valueAxis.getCoord(value);
if (value >= 0) { if (value >= 0) {
// 正向堆叠 // 正向堆叠
lastYP -= (baseYP - y); lastYP -= m > 0
? valueAxis.getCoordSize(value)
: (baseYP - valueAxis.getCoord(value));
y = lastYP; y = lastYP;
} }
else if (value < 0){ else if (value < 0){
// 负向堆叠 // 负向堆叠
lastYN += y - baseYN; lastYN += m > 0
? valueAxis.getCoordSize(value)
: (valueAxis.getCoord(value) - baseYN);
y = lastYN; y = lastYN;
} }
curPLMap[seriesIndex].push( curPLMap[seriesIndex].push(
...@@ -434,15 +438,19 @@ define(function(require) { ...@@ -434,15 +438,19 @@ define(function(require) {
} }
continue; continue;
} }
x = valueAxis.getCoord(value); //x = valueAxis.getCoord(value);
if (value >= 0) { if (value >= 0) {
// 正向堆叠 // 正向堆叠
lastXP += x - baseXP; lastXP += m > 0
? valueAxis.getCoordSize(value)
: (valueAxis.getCoord(value) - baseXP);
x = lastXP; x = lastXP;
} }
else if (value < 0){ else if (value < 0){
// 负向堆叠 // 负向堆叠
lastXN -= baseXN - x; lastXN -= m > 0
? valueAxis.getCoordSize(value)
: (baseXN - valueAxis.getCoord(value));
x = lastXN; x = lastXN;
} }
curPLMap[seriesIndex].push( curPLMap[seriesIndex].push(
......
...@@ -481,10 +481,10 @@ define(function (require) { ...@@ -481,10 +481,10 @@ define(function (require) {
// 不是自己的数据不计算极值 // 不是自己的数据不计算极值
continue; continue;
} }
var key = series[i].name || 'kener';
if (!series[i].stack) { if (!series[i].stack) {
var key = series[i].name || ''; data[key] = data[key] || [];
data[key] = [];
oriData = series[i].data; oriData = series[i].data;
for (var j = 0, k = oriData.length; j < k; j++) { for (var j = 0, k = oriData.length; j < k; j++) {
value = typeof oriData[j].value != 'undefined' value = typeof oriData[j].value != 'undefined'
...@@ -515,6 +515,7 @@ define(function (require) { ...@@ -515,6 +515,7 @@ define(function (require) {
var keyN = '__Magic_Key_Negative__' + series[i].stack; var keyN = '__Magic_Key_Negative__' + series[i].stack;
data[keyP] = data[keyP] || []; data[keyP] = data[keyP] || [];
data[keyN] = data[keyN] || []; data[keyN] = data[keyN] || [];
data[key] = data[key] || []; // scale下还需要记录每一个量
oriData = series[i].data; oriData = series[i].data;
for (var j = 0, k = oriData.length; j < k; j++) { for (var j = 0, k = oriData.length; j < k; j++) {
value = typeof oriData[j].value != 'undefined' value = typeof oriData[j].value != 'undefined'
...@@ -540,6 +541,9 @@ define(function (require) { ...@@ -540,6 +541,9 @@ define(function (require) {
data[keyN][j] = value; data[keyN][j] = value;
} }
} }
if (option.scale) {
data[key].push(value);
}
} }
} }
} }
...@@ -676,7 +680,7 @@ define(function (require) { ...@@ -676,7 +680,7 @@ define(function (require) {
var splitGap; var splitGap;
var power; var power;
if (precision === 0) { // 整数 if (precision === 0) { // 整数
power = option.power; power = option.power > 1 ? option.power : 1;
} }
else { // 小数 else { // 小数
// 放大倍数后复用整数逻辑,最后再缩小回去 // 放大倍数后复用整数逻辑,最后再缩小回去
...@@ -690,52 +694,52 @@ define(function (require) { ...@@ -690,52 +694,52 @@ define(function (require) {
if (_min >= 0 && _max >= 0) { if (_min >= 0 && _max >= 0) {
// 双正 // 双正
if (!scale) { if (!scale) {
// power自动降级
while ((_max / power < splitNumber) && power != 1) {
power = power / 10;
}
_min = 0; _min = 0;
} }
// power自动降级 else {
while ((_max / power < splitNumber) && power != 1) { // power自动降级
power = power / 10; while (_min < power && power != 1) {
} power = power / 10;
total = _max - _min;
// 粗算
splitGap = Math.ceil((total / splitNumber) / power) * power;
if (scale) {
if (precision === 0) { // 整数
_min = Math.floor(_min / splitGap) * splitGap;
} }
// 修正 if (precision === 0) { // 整数
if (_min + splitGap * splitNumber < _max) { // 满足power
splitGap = _min = Math.floor(_min / power) * power;
Math.ceil(((_max - _min) / splitNumber) / power) _max = Math.ceil(_max / power) * power;
* power;
} }
} }
power = power > 1 ? power / 10 : 1;
total = _max - _min;
splitGap = Math.ceil((total / splitNumber) / power) * power;
_max = _min + splitGap * splitNumber; _max = _min + splitGap * splitNumber;
} }
else if (_min <= 0 && _max <= 0) { else if (_min <= 0 && _max <= 0) {
// 双负 // 双负
power = -power;
if (!scale) { if (!scale) {
// power自动降级
while ((_min / power < splitNumber) && power != -1) {
power = power / 10;
}
_max = 0; _max = 0;
} }
power = -power; else {
// power自动降级 // power自动降级
while ((_min / power < splitNumber) && power != -1) { while (_max > power && power != -1) {
power = power / 10; power = power / 10;
}
total = _min - _max;
splitGap = -Math.ceil((total / splitNumber) / power) * power;
if (scale) {
if (precision === 0) { // 整数
_max = Math.ceil(_max / splitGap) * splitGap;
} }
// 修正 if (precision === 0) { // 整数
if (_max - splitGap * splitNumber > _min) { // 满足power
splitGap = _min = Math.ceil(_min / power) * power;
Math.ceil(((_min - _max) / splitNumber) / power) _max = Math.floor(_max / power) * power;
* power;
} }
} }
power = power < -1 ? power / 10 : -1;
total = _min - _max;
splitGap = -Math.ceil((total / splitNumber) / power) * power;
_min = -splitGap * splitNumber + _max; _min = -splitGap * splitNumber + _max;
} }
else { else {
...@@ -777,7 +781,6 @@ define(function (require) { ...@@ -777,7 +781,6 @@ define(function (require) {
(_valueList[i] / power).toFixed(precision) - 0; (_valueList[i] / power).toFixed(precision) - 0;
} }
} }
_reformLabelData(); _reformLabelData();
} }
...@@ -886,6 +889,18 @@ define(function (require) { ...@@ -886,6 +889,18 @@ define(function (require) {
: Math.floor(result); : Math.floor(result);
*/ */
} }
// 根据值换算绝对大小
function getCoordSize(value) {
if (option.position == 'left' || option.position == 'right') {
// 纵向
return Math.abs(value / (_max - _min) * grid.getHeight());
}
else {
// 横向
return Math.abs(value / (_max - _min) * grid.getWidth());
}
}
function getPosition() { function getPosition() {
return option.position; return option.position;
...@@ -895,6 +910,7 @@ define(function (require) { ...@@ -895,6 +910,7 @@ define(function (require) {
self.refresh = refresh; self.refresh = refresh;
self.getExtremum = getExtremum; self.getExtremum = getExtremum;
self.getCoord = getCoord; self.getCoord = getCoord;
self.getCoordSize = getCoordSize;
self.getPosition = getPosition; self.getPosition = getPosition;
init(option, grid, series); init(option, grid, series);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册