diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md
index a6ecfd5a..56f3c709 100644
--- a/Assets/XCharts/CHANGELOG.md
+++ b/Assets/XCharts/CHANGELOG.md
@@ -34,6 +34,7 @@
## Latest
+* (2021.04.28) 增加`SerieData`的`ignore`可忽略当前数据项
* (2021.04.28) 修复`DataZoom`下`AxisLabel`显示不准确的问题 #138
* (2021.04.26) 修复运行时动态创建图表会异常的问题 #137
* (2021.04.26) 增加`BarChart`绘制渐变边框的支持
diff --git a/Assets/XCharts/Editor/PropertyDrawers/SerieDrawer.cs b/Assets/XCharts/Editor/PropertyDrawers/SerieDrawer.cs
index e688a0b7..7044b3e9 100644
--- a/Assets/XCharts/Editor/PropertyDrawers/SerieDrawer.cs
+++ b/Assets/XCharts/Editor/PropertyDrawers/SerieDrawer.cs
@@ -393,6 +393,7 @@ namespace XCharts
if (showDetail)
{
EditorGUI.indentLevel += 2;
+ var m_Ignore = serieData.FindPropertyRelative("m_Ignore");
var m_Icon = serieData.FindPropertyRelative("m_IconStyle");
var m_EnableLabel = serieData.FindPropertyRelative("m_EnableLabel");
var m_Label = serieData.FindPropertyRelative("m_Label");
@@ -402,6 +403,8 @@ namespace XCharts
var m_Emphasis = serieData.FindPropertyRelative("m_Emphasis");
var m_EnableSymbol = serieData.FindPropertyRelative("m_EnableSymbol");
var m_Symbol = serieData.FindPropertyRelative("m_Symbol");
+ EditorGUI.PropertyField(drawRect, m_Ignore);
+ AddHeight(EditorGUI.GetPropertyHeight(m_Ignore));
EditorGUI.PropertyField(drawRect, m_Icon);
AddHeight(EditorGUI.GetPropertyHeight(m_Icon));
EditorGUI.PropertyField(drawRect, m_Symbol);
diff --git a/Assets/XCharts/Runtime/Component/Main/Serie.cs b/Assets/XCharts/Runtime/Component/Main/Serie.cs
index 250d8968..e75da2a1 100644
--- a/Assets/XCharts/Runtime/Component/Main/Serie.cs
+++ b/Assets/XCharts/Runtime/Component/Main/Serie.cs
@@ -1704,19 +1704,22 @@ namespace XCharts
}
}
- public bool IsIgnoreIndex(int index, int dimension)
+ public bool IsIgnoreIndex(int index, int dimension = 1)
{
- if (m_Ignore)
+ var serieData = GetSerieData(index);
+ if (serieData != null)
{
- var serieData = GetSerieData(index);
- if (serieData != null)
- {
- return IsIgnoreValue(serieData.GetData(dimension));
- }
+ return IsIgnoreValue(serieData, dimension);
}
return false;
}
+ public bool IsIgnoreValue(SerieData serieData, int dimension = 1)
+ {
+ if (serieData.ignore) return true;
+ return IsIgnoreValue(serieData.GetData(dimension));
+ }
+
public bool IsIgnoreValue(float value)
{
return m_Ignore && Mathf.Approximately(value, m_IgnoreValue);
diff --git a/Assets/XCharts/Runtime/Component/Sub/SerieData.cs b/Assets/XCharts/Runtime/Component/Sub/SerieData.cs
index b82f6f9a..4fa2a99d 100644
--- a/Assets/XCharts/Runtime/Component/Sub/SerieData.cs
+++ b/Assets/XCharts/Runtime/Component/Sub/SerieData.cs
@@ -19,6 +19,7 @@ namespace XCharts
{
[SerializeField] private string m_Name;
[SerializeField] private bool m_Selected;
+ [SerializeField] private bool m_Ignore = false;
[SerializeField] private float m_Radius;
[SerializeField] private IconStyle m_IconStyle = new IconStyle();
[SerializeField] private bool m_EnableLabel = false;
@@ -94,6 +95,14 @@ namespace XCharts
///
public SerieSymbol symbol { get { return m_Symbol; } set { m_Symbol = value; } }
///
+ /// 是否忽略数据。当为 true 时,数据不进行绘制。
+ ///
+ public bool ignore
+ {
+ get { return m_Ignore; }
+ set { if (PropertyUtil.SetStruct(ref m_Ignore, value)) SetVerticesDirty(); }
+ }
+ ///
/// An arbitrary dimension data list of data item.
/// 可指定任意维数的数值列表。
///
diff --git a/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs
index dd9205e0..e10e6497 100644
--- a/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs
+++ b/Assets/XCharts/Runtime/Helper/SerieLabelHelper.cs
@@ -85,7 +85,7 @@ namespace XCharts
public static bool CanShowLabel(Serie serie, SerieData serieData, SerieLabel label, int dimesion)
{
- return serie.show && serieData.canShowLabel && !serie.IsIgnoreValue(serieData.GetData(dimesion));
+ return serie.show && serieData.canShowLabel && !serie.IsIgnoreValue(serieData, dimesion);
}
public static string GetFormatterContent(Serie serie, SerieData serieData,
diff --git a/Assets/XCharts/Runtime/Helper/SeriesHelper.cs b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs
index e729e122..8cd73b2b 100644
--- a/Assets/XCharts/Runtime/Helper/SeriesHelper.cs
+++ b/Assets/XCharts/Runtime/Helper/SeriesHelper.cs
@@ -102,7 +102,7 @@ namespace XCharts
case SerieType.Ring:
for (int i = 0; i < serie.data.Count; i++)
{
- if (serie.type == SerieType.Pie && serie.IsIgnoreValue(serie.data[i].GetData(1))) continue;
+ if (serie.type == SerieType.Pie && serie.IsIgnoreValue(serie.data[i])) continue;
if (string.IsNullOrEmpty(serie.data[i].name))
serieNameList.Add(ChartCached.IntToStr(i));
else if (!serieNameList.Contains(serie.data[i].name))
diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart.cs
index e83d683f..7c697584 100644
--- a/Assets/XCharts/Runtime/Internal/CoordinateChart.cs
+++ b/Assets/XCharts/Runtime/Internal/CoordinateChart.cs
@@ -1684,7 +1684,7 @@ namespace XCharts
var pos = serie.dataPoints[j];
var serieLabel = SerieHelper.GetSerieLabel(serie, serieData);
var dimension = 1;
- var isIgnore = serie.IsIgnoreIndex(j, 1);
+ var isIgnore = serie.IsIgnoreIndex(j);
serieData.labelObject.SetPosition(serieData.labelPosition);
serieData.labelObject.UpdateIcon(serieData.iconStyle);
if (serie.show && serieLabel.show && serieData.canShowLabel && !isIgnore)
diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs
index 1250f23b..dbe0a0fd 100644
--- a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs
+++ b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawBar.cs
@@ -49,7 +49,7 @@ namespace XCharts
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
- if (serie.IsIgnoreValue(serieData.GetData(1)))
+ if (serie.IsIgnoreValue(serieData))
{
serie.dataPoints.Add(Vector3.zero);
continue;
@@ -185,7 +185,7 @@ namespace XCharts
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
- if (serie.IsIgnoreValue(serieData.GetData(1)))
+ if (serie.IsIgnoreValue(serieData))
{
serie.dataPoints.Add(Vector3.zero);
continue;
diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawCandlestick.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawCandlestick.cs
index c56e680a..9b655bae 100644
--- a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawCandlestick.cs
+++ b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawCandlestick.cs
@@ -37,7 +37,7 @@ namespace XCharts
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
- if (serie.IsIgnoreValue(serieData.GetData(1)))
+ if (serie.IsIgnoreValue(serieData))
{
serie.dataPoints.Add(Vector3.zero);
continue;
diff --git a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs
index 13d3873a..f557a4f0 100644
--- a/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs
+++ b/Assets/XCharts/Runtime/Internal/CoordinateChart_DrawLine.cs
@@ -125,7 +125,7 @@ namespace XCharts
for (i = serie.minShow; i < maxCount; i += rate)
{
if (i == maxCount - 1) includeLastData = true;
- if (serie.IsIgnoreValue(showData[i].GetData(1)))
+ if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
@@ -146,7 +146,7 @@ namespace XCharts
if (!includeLastData)
{
i = maxCount - 1;
- if (serie.IsIgnoreValue(showData[i].GetData(1)))
+ if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
@@ -179,7 +179,7 @@ namespace XCharts
if (serie.minShow > 0 && serie.minShow < showData.Count)
{
i = serie.minShow - 1;
- if (serie.IsIgnoreValue(showData[i].GetData(1)))
+ if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
@@ -197,7 +197,7 @@ namespace XCharts
if (serie.maxShow > 0 && serie.maxShow < showData.Count)
{
i = serie.maxShow;
- if (serie.IsIgnoreValue(showData[i].GetData(1)))
+ if (serie.IsIgnoreValue(showData[i]))
{
serie.dataPoints.Add(Vector3.zero);
showData[i].runtimeStackHig = 0;
diff --git a/Assets/XCharts/Runtime/Internal/DrawSeriePie.cs b/Assets/XCharts/Runtime/Internal/DrawSeriePie.cs
index e78ab63f..aac2b130 100644
--- a/Assets/XCharts/Runtime/Internal/DrawSeriePie.cs
+++ b/Assets/XCharts/Runtime/Internal/DrawSeriePie.cs
@@ -59,7 +59,7 @@ namespace XCharts
for (int n = 0; n < data.Count; n++)
{
var serieData = data[n];
- if (!serieData.canShowLabel || serie.IsIgnoreValue(serieData.GetData(1)))
+ if (!serieData.canShowLabel || serie.IsIgnoreValue(serieData))
{
serieData.SetLabelActive(false);
continue;