diff --git a/CHANGELOG.md b/CHANGELOG.md
index c72c81bc..5f3c238b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -59,6 +59,7 @@
## master
+* (2022.10.29) 增加`Serie`的`markColor`可设置标识颜色用于`Legend`和`Tooltip`的展示 (#229)
* (2022.10.26) 增加`RadarCoord`的`startAngle`可设置`Radar`起始角度
* (2022.10.21) 修复`Chart`在受`Layout`控制时`Label`显示不正常的问题 (#231)
* (2022.10.21) 修复`Unity2019.2`上的兼容问题
diff --git a/Editor/Series/BarEditor.cs b/Editor/Series/BarEditor.cs
index 1a078531..0e16bccc 100644
--- a/Editor/Series/BarEditor.cs
+++ b/Editor/Series/BarEditor.cs
@@ -47,6 +47,7 @@ namespace XCharts.Editor
PropertyField("m_Large");
PropertyField("m_LargeThreshold");
PropertyField("m_PlaceHolder");
+ PropertyField("m_MarkColor");
});
PropertyField("m_ItemStyle");
PropertyField("m_Animation");
diff --git a/Editor/Series/LineEditor.cs b/Editor/Series/LineEditor.cs
index 95b2e67c..91f6fe62 100644
--- a/Editor/Series/LineEditor.cs
+++ b/Editor/Series/LineEditor.cs
@@ -37,6 +37,7 @@ namespace XCharts.Editor
PropertyField("m_ShowAsPositiveNumber");
PropertyField("m_Large");
PropertyField("m_LargeThreshold");
+ PropertyField("m_MarkColor");
});
PropertyField("m_Symbol");
PropertyField("m_LineStyle");
diff --git a/Runtime/Internal/BaseChart.API.cs b/Runtime/Internal/BaseChart.API.cs
index 68c279cc..7c1d6996 100644
--- a/Runtime/Internal/BaseChart.API.cs
+++ b/Runtime/Internal/BaseChart.API.cs
@@ -568,6 +568,25 @@ namespace XCharts.Runtime
return theme.GetBackgroundColor(background);
}
+ [Since("v3.4.0")]
+ ///
+ /// 获得Serie的标识颜色。
+ ///
+ ///
+ ///
+ ///
+ public Color32 GetMarkColor(Serie serie, SerieData serieData)
+ {
+ if (ChartHelper.IsClearColor(serie.markColor))
+ {
+ return GetItemColor(serie, serieData);
+ }
+ else
+ {
+ return serie.markColor;
+ }
+ }
+
public Color32 GetItemColor(Serie serie, SerieData serieData)
{
Color32 color, toColor;
diff --git a/Runtime/Serie/Candlestick/CandlestickHandler.cs b/Runtime/Serie/Candlestick/CandlestickHandler.cs
index 765efcc1..9c315351 100644
--- a/Runtime/Serie/Candlestick/CandlestickHandler.cs
+++ b/Runtime/Serie/Candlestick/CandlestickHandler.cs
@@ -29,7 +29,7 @@ namespace XCharts.Runtime
title = category;
- var color = chart.GetItemColor(serie, serieData);
+ var color = chart.GetMarkColor(serie, serieData);
var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker);
var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter);
var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);
diff --git a/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs b/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs
index 924bc692..b52d068b 100644
--- a/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs
+++ b/Runtime/Serie/Candlestick/SimplifiedCandlestickHandler.cs
@@ -29,7 +29,7 @@ namespace XCharts.Runtime
title = category;
- var color = chart.GetItemColor(serie, serieData);
+ var color = chart.GetMarkColor(serie, serieData);
var newMarker = SerieHelper.GetItemMarker(serie, serieData, marker);
var newItemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter);
var newNumericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);
diff --git a/Runtime/Serie/Scatter/BaseScatterHandler.cs b/Runtime/Serie/Scatter/BaseScatterHandler.cs
index b2d3306a..aff96bab 100644
--- a/Runtime/Serie/Scatter/BaseScatterHandler.cs
+++ b/Runtime/Serie/Scatter/BaseScatterHandler.cs
@@ -37,7 +37,7 @@ namespace XCharts.Runtime
param.dimension = 1;
param.dataCount = serie.dataCount;
param.serieData = serieData;
- param.color = chart.GetItemColor(serie, serieData);
+ param.color = chart.GetMarkColor(serie, serieData);
param.marker = SerieHelper.GetItemMarker(serie, serieData, marker);
param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter);
param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);
diff --git a/Runtime/Serie/Serie.cs b/Runtime/Serie/Serie.cs
index 9940bf26..a7be10ad 100644
--- a/Runtime/Serie/Serie.cs
+++ b/Runtime/Serie/Serie.cs
@@ -230,6 +230,7 @@ namespace XCharts.Runtime
[SerializeField] private string m_SerieName;
[SerializeField][Since("v3.2.0")] private SerieState m_State = SerieState.Normal;
[SerializeField][Since("v3.2.0")] private SerieColorBy m_ColorBy = SerieColorBy.Default;
+ [SerializeField][Since("v3.4.0")] private Color32 m_MarkColor;
[SerializeField] private string m_Stack;
[SerializeField] private int m_XAxisIndex = 0;
[SerializeField] private int m_YAxisIndex = 0;
@@ -374,6 +375,15 @@ namespace XCharts.Runtime
set { if (PropertyUtil.SetStruct(ref m_ColorBy, value)) { SetAllDirty(); } }
}
///
+ /// Serie's mark color. It is only used to display Legend and Tooltip, and does not affect the drawing color. The default value is clear.
+ /// |Serie的标识颜色。仅用于Legend和Tooltip的展示,不影响绘制颜色,默认为clear。
+ ///
+ public Color32 markColor
+ {
+ get { return m_MarkColor; }
+ set { if (PropertyUtil.SetStruct(ref m_MarkColor, value)) { SetAllDirty(); } }
+ }
+ ///
/// If stack the value. On the same category axis, the series with the same stack name would be put on top of each other.
/// |数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加。
///
diff --git a/Runtime/Serie/SerieHandler.cs b/Runtime/Serie/SerieHandler.cs
index abd8863a..ce6eb8e8 100644
--- a/Runtime/Serie/SerieHandler.cs
+++ b/Runtime/Serie/SerieHandler.cs
@@ -528,7 +528,7 @@ namespace XCharts.Runtime
param.value = serieData.GetData(dimension);
param.ignore = ignore;
param.total = serie.yTotal;
- param.color = chart.GetItemColor(serie, serieData);
+ param.color = chart.GetMarkColor(serie, serieData);
param.marker = SerieHelper.GetItemMarker(serie, serieData, marker);
param.itemFormatter = itemFormatter;
param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter);
diff --git a/Runtime/Serie/SeriesHelper.cs b/Runtime/Serie/SeriesHelper.cs
index d643ad06..6879d39e 100644
--- a/Runtime/Serie/SeriesHelper.cs
+++ b/Runtime/Serie/SeriesHelper.cs
@@ -106,9 +106,16 @@ namespace XCharts.Runtime
break;
}
}
- Color32 color, toColor;
- SerieHelper.GetItemColor(out color, out toColor, destSerie, destSerieData, chart.theme, index, SerieState.Normal);
- return color;
+ if (ChartHelper.IsClearColor(destSerie.markColor))
+ {
+ Color32 color, toColor;
+ SerieHelper.GetItemColor(out color, out toColor, destSerie, destSerieData, chart.theme, index, SerieState.Normal);
+ return color;
+ }
+ else
+ {
+ return destSerie.markColor;
+ }
}
///