From 3316fce8a5e45a493e9b060269abebd0ecd47b83 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Thu, 29 Jul 2021 08:27:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`Serie`=E5=BC=80=E5=90=AF`ign?= =?UTF-8?q?ore`=E6=97=B6=E8=A2=AB=E5=BF=BD=E7=95=A5=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=BF=98=E4=BC=9A=E5=8F=82=E4=B8=8E=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20(#161)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/XCharts/CHANGELOG-EN.md | 1 + Assets/XCharts/CHANGELOG.md | 1 + .../XCharts/Runtime/Component/Main/Serie.cs | 13 +++--- Assets/XCharts/Runtime/Helper/SerieHelper.cs | 33 ++++++++------ Assets/XCharts/Runtime/Helper/SeriesHelper.cs | 43 ++++++++++--------- 5 files changed, 51 insertions(+), 40 deletions(-) diff --git a/Assets/XCharts/CHANGELOG-EN.md b/Assets/XCharts/CHANGELOG-EN.md index cbf3368c..599b8016 100644 --- a/Assets/XCharts/CHANGELOG-EN.md +++ b/Assets/XCharts/CHANGELOG-EN.md @@ -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) diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index 58818ed5..9d93c788 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -39,6 +39,7 @@ ## master +* (2021.07.29) 修复`Serie`开启`ignore`时被忽略的数据还会参与计算的问题 (#161) * (2021.07.29) 完善`BarChart`的`Zebra`斑马柱图渐变支持 * (2021.07.26) 修复`TextMeshPro Enable`时找不到`XCharts`路径的问题 (#160) diff --git a/Assets/XCharts/Runtime/Component/Main/Serie.cs b/Assets/XCharts/Runtime/Component/Main/Serie.cs index a120eed4..dee5a7a3 100644 --- a/Assets/XCharts/Runtime/Component/Main/Serie.cs +++ b/Assets/XCharts/Runtime/Component/Main/Serie.cs @@ -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; diff --git a/Assets/XCharts/Runtime/Helper/SerieHelper.cs b/Assets/XCharts/Runtime/Helper/SerieHelper.cs index 99d6b966..77b5b8f9 100644 --- a/Assets/XCharts/Runtime/Helper/SerieHelper.cs +++ b/Assets/XCharts/Runtime/Helper/SerieHelper.cs @@ -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; } } diff --git a/Assets/XCharts/Runtime/Helper/SeriesHelper.cs b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs index 9dbe251c..05993447 100644 --- a/Assets/XCharts/Runtime/Helper/SeriesHelper.cs +++ b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs @@ -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; } } }