修复Serie开启ignore时被忽略的数据还会参与计算的问题 (#161)

This commit is contained in:
monitor1394
2021-07-29 08:27:23 +08:00
parent f85f96a560
commit 3316fce8a5
5 changed files with 51 additions and 40 deletions

View File

@@ -39,6 +39,7 @@
## master
* (2021.07.29) Fixed ignored data will also participate in calculations when `ignore` is enabled (#161)
* (2021.07.29) Improved `BarChart`'s `Zebra` gradient support
* (2021.07.26) Fixed issue where `XCharts` path could not be found when `TextMeshPro Enable` (#160)

View File

@@ -39,6 +39,7 @@
## master
* (2021.07.29) 修复`Serie`开启`ignore`时被忽略的数据还会参与计算的问题 (#161)
* (2021.07.29) 完善`BarChart``Zebra`斑马柱图渐变支持
* (2021.07.26) 修复`TextMeshPro Enable`时找不到`XCharts`路径的问题 (#160)

View File

@@ -1245,7 +1245,7 @@ namespace XCharts
var max = double.MinValue;
foreach (var sdata in data)
{
if (sdata.show && sdata.data[1] > max)
if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] > max)
{
max = sdata.data[1];
}
@@ -1264,7 +1264,7 @@ namespace XCharts
var max = double.MinValue;
foreach (var sdata in data)
{
if (sdata.show && sdata.data[0] > max)
if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] > max)
{
max = sdata.data[0];
}
@@ -1283,7 +1283,7 @@ namespace XCharts
var min = double.MaxValue;
foreach (var sdata in data)
{
if (sdata.show && sdata.data[1] < min)
if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] < min)
{
min = sdata.data[1];
}
@@ -1302,7 +1302,7 @@ namespace XCharts
var min = double.MaxValue;
foreach (var sdata in data)
{
if (sdata.show && sdata.data[0] < min)
if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] < min)
{
min = sdata.data[0];
}
@@ -1321,9 +1321,8 @@ namespace XCharts
double total = 0;
foreach (var sdata in data)
{
if (sdata.show)
if (sdata.show && !IsIgnoreValue(sdata.data[1]))
total += sdata.GetCurrData(1, animation.GetUpdateAnimationDuration());
//total += sdata.GetData(1);
}
return total;
}
@@ -1339,7 +1338,7 @@ namespace XCharts
double total = 0;
foreach (var sdata in data)
{
if (sdata.show)
if (sdata.show && !IsIgnoreValue(sdata.data[1]))
total += sdata.data[0];
}
return total;

View File

@@ -23,7 +23,7 @@ namespace XCharts
if (serieData.show && serieData.data.Count > dimension)
{
var value = serieData.data[dimension];
if (value < min) min = value;
if (value < min && !serie.IsIgnoreValue(value)) min = value;
}
}
return min == double.MaxValue ? 0 : min;
@@ -39,7 +39,7 @@ namespace XCharts
if (serieData.show && serieData.data.Count > dimension)
{
var value = serieData.data[dimension];
if (value < min)
if (value < min && !serie.IsIgnoreValue(value))
{
min = value;
minData = serieData;
@@ -58,7 +58,7 @@ namespace XCharts
if (serieData.show && serieData.data.Count > dimension)
{
var value = serieData.data[dimension];
if (value > max) max = value;
if (value > max && !serie.IsIgnoreValue(value)) max = value;
}
}
return max == double.MinValue ? 0 : max;
@@ -74,7 +74,7 @@ namespace XCharts
if (serieData.show && serieData.data.Count > dimension)
{
var value = serieData.data[dimension];
if (value > max)
if (value > max && !serie.IsIgnoreValue(value))
{
max = value;
maxData = serieData;
@@ -93,7 +93,9 @@ namespace XCharts
var serieData = dataList[i];
if (serieData.show && serieData.data.Count > dimension)
{
total += serieData.data[dimension];
var value = serieData.data[dimension];
if (!serie.IsIgnoreValue(value))
total += value;
}
}
return total != 0 ? total / dataList.Count : 0;
@@ -109,7 +111,9 @@ namespace XCharts
var serieData = dataList[i];
if (serieData.show && serieData.data.Count > dimension)
{
s_TempList.Add(serieData.data[dimension]);
var value = serieData.data[dimension];
if (!serie.IsIgnoreValue(value))
s_TempList.Add(value);
}
}
s_TempList.Sort();
@@ -139,8 +143,11 @@ namespace XCharts
if (serieData.show && serieData.data.Count > dimension)
{
var value = serieData.data[dimension];
if (value > max) max = value;
if (value < min) min = value;
if (!serie.IsIgnoreValue(value))
{
if (value > max) max = value;
if (value < min) min = value;
}
}
}
}
@@ -171,8 +178,11 @@ namespace XCharts
for (int j = 0; j < count; j++)
{
var value = serieData.data[j];
if (value > max) max = value;
if (value < min) min = value;
if (!serie.IsIgnoreValue(value))
{
if (value > max) max = value;
if (value < min) min = value;
}
}
}
}
@@ -421,7 +431,7 @@ namespace XCharts
public static IconStyle GetIconStyle(Serie serie, SerieData serieData)
{
if(serieData.enableIconStyle) return serieData.iconStyle;
if (serieData.enableIconStyle) return serieData.iconStyle;
else return serie.iconStyle;
}
@@ -690,7 +700,6 @@ namespace XCharts
});
break;
case SerieDataSortType.None:
break;
}
}

View File

@@ -444,28 +444,29 @@ namespace XCharts
var serie = series.GetSerie(i);
if ((isPolar && serie.polarIndex != axisIndex)
|| (!isPolar && serie.yAxisIndex != axisIndex)) continue;
if (series.IsActive(i))
if (isPercentStack && SeriesHelper.IsPercentStack(series, serie.name, SerieType.Bar))
{
if (isPercentStack && SeriesHelper.IsPercentStack(series, serie.name, SerieType.Bar))
if (100 > max) max = 100;
if (0 < min) min = 0;
}
else
{
var showData = serie.GetDataList(dataZoom);
foreach (var data in showData)
{
if (100 > max) max = 100;
if (0 < min) min = 0;
}
else
{
var showData = serie.GetDataList(dataZoom);
foreach (var data in showData)
if (serie.type == SerieType.Candlestick)
{
if (serie.type == SerieType.Candlestick)
var dataMin = data.GetMinData(inverse);
var dataMax = data.GetMaxData(inverse);
if (dataMax > max) max = dataMax;
if (dataMin < min) min = dataMin;
}
else
{
var currData = data.GetData(yValue ? 1 : 0, inverse);
if (!serie.IsIgnoreValue(currData))
{
var dataMin = data.GetMinData(inverse);
var dataMax = data.GetMaxData(inverse);
if (dataMax > max) max = dataMax;
if (dataMin < min) min = dataMin;
}
else
{
var currData = data.GetData(yValue ? 1 : 0, inverse);
if (currData > max) max = currData;
if (currData < min) min = currData;
}
@@ -484,8 +485,7 @@ namespace XCharts
{
var serie = ss.Value[i];
if ((isPolar && serie.polarIndex != axisIndex)
|| (!isPolar && serie.yAxisIndex != axisIndex)
|| !series.IsActive(i)) continue;
|| (!isPolar && serie.yAxisIndex != axisIndex)) continue;
var showData = serie.GetDataList(dataZoom);
if (SeriesHelper.IsPercentStack(series, serie.stack, SerieType.Bar))
{
@@ -510,7 +510,8 @@ namespace XCharts
currData = yValue ? showData[j].GetData(1) : showData[j].GetData(0);
}
if (inverse) currData = -currData;
_serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + currData;
if(!serie.IsIgnoreValue(currData))
_serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + currData;
}
}
}