diff --git a/Scripts/UI/Component/Serie.cs b/Scripts/UI/Component/Serie.cs
index 44a2957b..9e03359f 100644
--- a/Scripts/UI/Component/Serie.cs
+++ b/Scripts/UI/Component/Serie.cs
@@ -639,6 +639,19 @@ namespace XCharts
}
}
+ public void UpdateDataName(int index, string name)
+ {
+ if (index >= 0 && index < m_Data.Count)
+ {
+ var serieData = m_Data[index];
+ serieData.name = name;
+ if (serieData.label != null)
+ {
+ serieData.label.text = name == null ? "" : name;
+ }
+ }
+ }
+
///
/// 清除所有数据的高亮标志
///
diff --git a/Scripts/UI/Component/Series.cs b/Scripts/UI/Component/Series.cs
index 76ebd9ba..1e345b73 100644
--- a/Scripts/UI/Component/Series.cs
+++ b/Scripts/UI/Component/Series.cs
@@ -332,6 +332,24 @@ namespace XCharts
}
}
+ public void UpdateDataName(string serieName, string dataName, int dataIndex = 0)
+ {
+ var serie = GetSerie(serieName);
+ if (serie != null)
+ {
+ serie.UpdateDataName(dataIndex, dataName);
+ }
+ }
+
+ public void UpdateDataName(int serieIndex, string dataName, int dataIndex = 0)
+ {
+ var serie = GetSerie(serieIndex);
+ if (serie != null)
+ {
+ serie.UpdateDataName(dataIndex, dataName);
+ }
+ }
+
///
/// 更新指定系列的维度Y数据
///
diff --git a/Scripts/UI/Internal/BaseChart.cs b/Scripts/UI/Internal/BaseChart.cs
index 0c221e75..397a0024 100644
--- a/Scripts/UI/Internal/BaseChart.cs
+++ b/Scripts/UI/Internal/BaseChart.cs
@@ -52,6 +52,7 @@ namespace XCharts
[NonSerialized] private List m_CheckSerieName = new List();
[NonSerialized] private bool m_RefreshChart = false;
[NonSerialized] private bool m_RefreshLabel = false;
+ [NonSerialized] private bool m_ReinitLabel = false;
protected Vector2 chartAnchorMax { get { return rectTransform.anchorMax; } }
protected Vector2 chartAnchorMin { get { return rectTransform.anchorMin; } }
@@ -199,7 +200,6 @@ namespace XCharts
private void InitLegend()
{
m_Legend.OnChanged();
- ChartHelper.HideAllObject(transform, s_LegendObjectName);
TextAnchor anchor = m_Legend.location.textAnchor;
Vector2 anchorMin = m_Legend.location.anchorMin;
Vector2 anchorMax = m_Legend.location.anchorMax;
@@ -208,8 +208,8 @@ namespace XCharts
var legendObject = ChartHelper.AddObject(s_LegendObjectName, transform, anchorMin, anchorMax,
pivot, new Vector2(chartWidth, chartHeight));
legendObject.transform.localPosition = m_Legend.location.GetPosition(chartWidth, chartHeight);
- ChartHelper.HideAllObject(legendObject, s_LegendObjectName);
-
+ ChartHelper.DestoryAllChilds(legendObject.transform);
+ if (!m_Legend.show) return;
var serieNameList = m_Series.GetSerieNameList();
List datas;
if (m_Legend.data.Count > 0)
@@ -287,9 +287,9 @@ namespace XCharts
private void InitSerieLabel()
{
- ChartHelper.HideAllObject(transform, s_SerieLabelObjectName);
var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin,
chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight));
+ ChartHelper.DestoryAllChilds(labelObject.transform);
int count = 0;
for (int i = 0; i < m_Series.Count; i++)
{
@@ -308,7 +308,7 @@ namespace XCharts
m_ThemeInfo.font, color, TextAnchor.MiddleCenter, anchorMin, anchorMax, pivot,
new Vector2(50, serie.label.fontSize), serie.label.fontSize);
serieData.label.text = serieData.name;
- serieData.label.gameObject.SetActive(true);
+ ChartHelper.SetActive(serieData.label.gameObject, false);
}
}
}
@@ -445,6 +445,11 @@ namespace XCharts
protected void CheckRefreshLabel()
{
+ if (m_ReinitLabel)
+ {
+ m_ReinitLabel = false;
+ InitSerieLabel();
+ }
if (m_RefreshLabel)
{
m_RefreshLabel = false;
diff --git a/Scripts/UI/Internal/BaseChart_API.cs b/Scripts/UI/Internal/BaseChart_API.cs
index 8caa86c6..b65fd2e2 100644
--- a/Scripts/UI/Internal/BaseChart_API.cs
+++ b/Scripts/UI/Internal/BaseChart_API.cs
@@ -168,7 +168,11 @@ namespace XCharts
public virtual bool AddData(int serieIndex, float data, string dataName = null)
{
var success = m_Series.AddData(serieIndex, data, dataName, m_MaxCacheDataNumber);
- if (success) RefreshChart();
+ if (success)
+ {
+ RefreshChart();
+ ReinitChartLabel();
+ }
return success;
}
@@ -183,7 +187,11 @@ namespace XCharts
public virtual bool AddData(string serieName, List multidimensionalData, string dataName = null)
{
var success = m_Series.AddData(serieName, multidimensionalData, dataName, m_MaxCacheDataNumber);
- if (success) RefreshChart();
+ if (success)
+ {
+ RefreshChart();
+ ReinitChartLabel();
+ }
return success;
}
@@ -198,7 +206,11 @@ namespace XCharts
public virtual bool AddData(int serieIndex, List multidimensionalData, string dataName = null)
{
var success = m_Series.AddData(serieIndex, multidimensionalData, dataName, m_MaxCacheDataNumber);
- if (success) RefreshChart();
+ if (success)
+ {
+ RefreshChart();
+ ReinitChartLabel();
+ }
return success;
}
@@ -214,7 +226,11 @@ namespace XCharts
public virtual bool AddData(string serieName, float xValue, float yValue, string dataName)
{
var success = m_Series.AddXYData(serieName, xValue, yValue, dataName, m_MaxCacheDataNumber);
- if (success) RefreshChart();
+ if (success)
+ {
+ RefreshChart();
+ ReinitChartLabel();
+ }
return true;
}
@@ -230,7 +246,11 @@ namespace XCharts
public virtual bool AddData(int serieIndex, float xValue, float yValue, string dataName = null)
{
var success = m_Series.AddXYData(serieIndex, xValue, yValue, dataName, m_MaxCacheDataNumber);
- if (success) RefreshChart();
+ if (success)
+ {
+ RefreshChart();
+ ReinitChartLabel();
+ }
return success;
}
@@ -260,6 +280,30 @@ namespace XCharts
RefreshChart();
}
+ ///
+ /// Update serie data name.
+ /// 更新指定系列中的指定索引数据名称。
+ ///
+ ///
+ ///
+ ///
+ public virtual void UpdateDataName(string serieName, string dataName, int dataIndex = 0)
+ {
+ m_Series.UpdateDataName(serieName, dataName, dataIndex);
+ }
+
+ ///
+ /// Update serie data name.
+ /// 更新指定系列中的指定索引数据名称。
+ ///
+ ///
+ ///
+ ///
+ public virtual void UpdateDataName(int serieIndex, string dataName, int dataIndex)
+ {
+ m_Series.UpdateDataName(serieIndex, dataName, dataIndex);
+ }
+
///
/// Whether to show serie.
/// 设置指定系列是否显示。
@@ -352,6 +396,14 @@ namespace XCharts
m_RefreshChart = true;
}
+ ///
+ /// 重新初始化Label。
+ ///
+ public void ReinitChartLabel()
+ {
+ m_ReinitLabel = true;
+ }
+
///
/// Update chart theme.
/// 切换图表主题。
diff --git a/Scripts/UI/PieChart.cs b/Scripts/UI/PieChart.cs
index 85565f41..985e650c 100644
--- a/Scripts/UI/PieChart.cs
+++ b/Scripts/UI/PieChart.cs
@@ -341,6 +341,7 @@ namespace XCharts
var isHighlight = (serieData.highlighted && serie.highlightLabel.show);
if (serie.label.show || isHighlight)
{
+ ChartHelper.SetActive(serieData.label.gameObject,true);
float rotate = 0;
bool isInsidePosition = serie.label.position == SerieLabel.Position.Inside;
if (serie.label.rotate > 0 && isInsidePosition)