优化SerieDataignore设置时的忽略数据判断

This commit is contained in:
monitor1394
2023-02-02 07:58:50 +08:00
parent ace8537650
commit 22715dab95
6 changed files with 41 additions and 35 deletions

View File

@@ -65,6 +65,9 @@ slug: /changelog
## master ## master
* (2023.02.02) 优化`SerieData``ignore`设置时的忽略数据判断
* (2023.02.01) 修复`XChartsMgr.ContainsChart()`接口异常
* (2023.01.31) 增加`InputSystem`的支持 (#242) (by Bian-Sh)
* (2023.01.11) 修复`Inspector`上移除`Component`后图表没有及时刷新的问题 (#241) * (2023.01.11) 修复`Inspector`上移除`Component`后图表没有及时刷新的问题 (#241)
* (2023.01.06) 修复`Pie`在最后的几个数据都为0时`Label`显示不正常的问题 (#240) * (2023.01.06) 修复`Pie`在最后的几个数据都为0时`Label`显示不正常的问题 (#240)
* (2023.01.03) 删除`Serie``MarkColor`,增加`ItemStyle``MarkColor` * (2023.01.03) 删除`Serie``MarkColor`,增加`ItemStyle``MarkColor`

View File

@@ -48,7 +48,6 @@ namespace XCharts.Editor
PropertyField("m_Large"); PropertyField("m_Large");
PropertyField("m_LargeThreshold"); PropertyField("m_LargeThreshold");
PropertyField("m_PlaceHolder"); PropertyField("m_PlaceHolder");
PropertyField("m_MarkColor");
}); });
PropertyField("m_ItemStyle"); PropertyField("m_ItemStyle");
PropertyField("m_Animation"); PropertyField("m_Animation");

View File

@@ -37,7 +37,6 @@ namespace XCharts.Editor
PropertyField("m_ShowAsPositiveNumber"); PropertyField("m_ShowAsPositiveNumber");
PropertyField("m_Large"); PropertyField("m_Large");
PropertyField("m_LargeThreshold"); PropertyField("m_LargeThreshold");
PropertyField("m_MarkColor");
}); });
PropertyField("m_Symbol"); PropertyField("m_Symbol");
PropertyField("m_LineStyle"); PropertyField("m_LineStyle");

View File

@@ -1061,7 +1061,7 @@ namespace XCharts.Runtime
var max = double.MinValue; var max = double.MinValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] > max) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[1]) && sdata.data[1] > max)
{ {
max = sdata.data[1]; max = sdata.data[1];
} }
@@ -1080,7 +1080,7 @@ namespace XCharts.Runtime
var max = double.MinValue; var max = double.MinValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] > max) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[0]) && sdata.data[0] > max)
{ {
max = sdata.data[0]; max = sdata.data[0];
} }
@@ -1099,7 +1099,7 @@ namespace XCharts.Runtime
var min = double.MaxValue; var min = double.MaxValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[1]) && sdata.data[1] < min) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[1]) && sdata.data[1] < min)
{ {
min = sdata.data[1]; min = sdata.data[1];
} }
@@ -1118,7 +1118,7 @@ namespace XCharts.Runtime
var min = double.MaxValue; var min = double.MaxValue;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[0]) && sdata.data[0] < min) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[0]) && sdata.data[0] < min)
{ {
min = sdata.data[0]; min = sdata.data[0];
} }
@@ -1139,7 +1139,7 @@ namespace XCharts.Runtime
{ {
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[1])) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[1]))
total += sdata.data[1]; total += sdata.data[1];
} }
} }
@@ -1149,7 +1149,7 @@ namespace XCharts.Runtime
var unscaledTime = animation.unscaledTime; var unscaledTime = animation.unscaledTime;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[1])) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[1]))
total += sdata.GetCurrData(1, duration, unscaledTime); total += sdata.GetCurrData(1, duration, unscaledTime);
} }
} }
@@ -1167,7 +1167,7 @@ namespace XCharts.Runtime
double total = 0; double total = 0;
foreach (var sdata in data) foreach (var sdata in data)
{ {
if (sdata.show && !IsIgnoreValue(sdata.data[1])) if (sdata.show && !IsIgnoreValue(sdata, sdata.data[1]))
total += sdata.data[0]; total += sdata.data[0];
} }
return total; return total;
@@ -1780,7 +1780,7 @@ namespace XCharts.Runtime
public bool IsIgnoreValue(SerieData serieData, int dimension = 1) public bool IsIgnoreValue(SerieData serieData, int dimension = 1)
{ {
return serieData.ignore || IsIgnoreValue(serieData.GetData(dimension)); return IsIgnoreValue(serieData, serieData.GetData(dimension));
} }
public bool IsIgnoreValue(double value) public bool IsIgnoreValue(double value)
@@ -1788,6 +1788,11 @@ namespace XCharts.Runtime
return m_Ignore && MathUtil.Approximately(value, m_IgnoreValue); return m_Ignore && MathUtil.Approximately(value, m_IgnoreValue);
} }
public bool IsIgnoreValue(SerieData serieData, double value)
{
return serieData.ignore || IsIgnoreValue(value);
}
public bool IsIgnorePoint(int index) public bool IsIgnorePoint(int index)
{ {
if (index >= 0 && index < dataCount) if (index >= 0 && index < dataCount)

View File

@@ -17,7 +17,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (value < min && !serie.IsIgnoreValue(value)) min = value; if (value < min && !serie.IsIgnoreValue(serieData, value)) min = value;
} }
} }
return min == double.MaxValue ? 0 : min; return min == double.MaxValue ? 0 : min;
@@ -33,7 +33,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (value < min && !serie.IsIgnoreValue(value)) if (value < min && !serie.IsIgnoreValue(serieData, value))
{ {
min = value; min = value;
minData = serieData; minData = serieData;
@@ -52,7 +52,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (value > max && !serie.IsIgnoreValue(value)) max = value; if (value > max && !serie.IsIgnoreValue(serieData, value)) max = value;
} }
} }
return max == double.MinValue ? 0 : max; return max == double.MinValue ? 0 : max;
@@ -68,7 +68,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (value > max && !serie.IsIgnoreValue(value)) if (value > max && !serie.IsIgnoreValue(serieData, value))
{ {
max = value; max = value;
maxData = serieData; maxData = serieData;
@@ -88,7 +88,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (!serie.IsIgnoreValue(value)) if (!serie.IsIgnoreValue(serieData, value))
total += value; total += value;
} }
} }
@@ -106,7 +106,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (!serie.IsIgnoreValue(value)) if (!serie.IsIgnoreValue(serieData, value))
s_TempList.Add(value); s_TempList.Add(value);
} }
} }
@@ -137,7 +137,7 @@ namespace XCharts.Runtime
if (serieData.show && serieData.data.Count > dimension) if (serieData.show && serieData.data.Count > dimension)
{ {
var value = serieData.data[dimension]; var value = serieData.data[dimension];
if (!serie.IsIgnoreValue(value)) if (!serie.IsIgnoreValue(serieData, value))
{ {
if (value > max) max = value; if (value > max) max = value;
if (value < min) min = value; if (value < min) min = value;
@@ -177,7 +177,7 @@ namespace XCharts.Runtime
for (int j = 0; j < count; j++) for (int j = 0; j < count; j++)
{ {
var value = serieData.data[j]; var value = serieData.data[j];
if (!serie.IsIgnoreValue(value)) if (!serie.IsIgnoreValue(serieData, value))
{ {
if (value > max) max = value; if (value > max) max = value;
if (value < min) min = value; if (value < min) min = value;

View File

@@ -373,7 +373,7 @@ namespace XCharts.Runtime
{ {
var currData = performanceMode ? data.GetData(yValue ? 1 : 0, inverse) : var currData = performanceMode ? data.GetData(yValue ? 1 : 0, inverse) :
data.GetCurrData(yValue ? 1 : 0, updateDuration, unscaledTime, inverse); data.GetCurrData(yValue ? 1 : 0, updateDuration, unscaledTime, inverse);
if (!serie.IsIgnoreValue(currData)) if (!serie.IsIgnoreValue(data, currData))
{ {
if (currData > max) max = currData; if (currData > max) max = currData;
if (currData < min) min = currData; if (currData < min) min = currData;
@@ -419,7 +419,7 @@ namespace XCharts.Runtime
currData = yValue ? showData[j].GetData(1) : showData[j].GetData(0); currData = yValue ? showData[j].GetData(1) : showData[j].GetData(0);
} }
if (inverse) currData = -currData; if (inverse) currData = -currData;
if (!serie.IsIgnoreValue(currData)) if (!serie.IsIgnoreValue(showData[j], currData))
_serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + currData; _serieTotalValueForMinMax[j] = _serieTotalValueForMinMax[j] + currData;
} }
} }